feat: server支持自定义公共方法

This commit is contained in:
余泓铮
2025-02-19 20:54:50 +08:00
parent c50cdd0a48
commit 8d6478a137
6 changed files with 54 additions and 411 deletions

View File

@@ -14,7 +14,7 @@ import (
"github.com/httprunner/httprunner/v5/pkg/uixt/option"
)
func (r *Router) GetDriver(c *gin.Context) (driverExt uixt.IXTDriver, err error) {
func (p RouterBaseMethod) GetDriver(c *gin.Context) (driverExt uixt.IXTDriver, err error) {
deviceObj, exists := c.Get("device")
var device uixt.IDevice
var driver uixt.IDriver
@@ -54,7 +54,6 @@ func GetDevice(c *gin.Context) (device uixt.IDevice, err error) {
RenderErrorInitDriver(c, err)
return
}
_ = device.Setup()
case "ios":
device, err = uixt.NewIOSDevice(
option.WithUDID(serial),
@@ -70,6 +69,10 @@ func GetDevice(c *gin.Context) (device uixt.IDevice, err error) {
err = fmt.Errorf("[%s]: invalid platform", c.HandlerName())
return
}
err = device.Setup()
if err != nil {
log.Error().Err(err).Msg("setup device failed")
}
c.Set("device", device)
return device, nil
}

View File

@@ -11,7 +11,7 @@ import (
"github.com/httprunner/httprunner/v5/server"
)
func (r *RouterExt) GetDriver(c *gin.Context) (driverExt uixt.IXTDriver, err error) {
func (p RouterBaseMethodExt) GetDriver(c *gin.Context) (driverExt uixt.IXTDriver, err error) {
platform := c.Param("platform")
deviceObj, exists := c.Get("device")
var device uixt.IDevice

View File

@@ -1,6 +1,7 @@
package server_ext
import (
"github.com/gin-gonic/gin"
"github.com/httprunner/httprunner/v5/server"
)
@@ -8,15 +9,22 @@ type RouterExt struct {
*server.Router
}
type RouterBaseMethodExt struct {
server.RouterBaseMethod
}
func NewExtRouter() *RouterExt {
router := &RouterExt{
Router: server.NewRouter(),
Router: &server.Router{
Engine: gin.Default(),
IRouterBaseMethod: &RouterBaseMethodExt{},
},
}
router.Setup()
router.Init()
return router
}
func (r *RouterExt) Setup() {
func (r *RouterExt) Init() {
r.Router.Init()
apiV1PlatformSerial := r.Group("/api/v1").Group("/:platform").Group("/:serial")

View File

@@ -11,21 +11,27 @@ import (
)
func NewRouter() *Router {
router := &Router{}
router := &Router{
Engine: gin.Default(),
IRouterBaseMethod: &RouterBaseMethod{},
}
router.Init()
return router
}
type Router struct {
*gin.Engine
IRouterBaseMethod
}
type IRouter interface {
type RouterBaseMethod struct {
}
type IRouterBaseMethod interface {
GetDriver(c *gin.Context) (driver uixt.IXTDriver, err error)
}
func (r *Router) Init() {
r.Engine = gin.Default()
r.Engine.Use(teardown())
r.Engine.GET("/ping", r.pingHandler)
r.Engine.GET("/", r.pingHandler)