add device search endpoint. >_>
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
|||||||
"git.aiterp.net/lucifer/new-server/models"
|
"git.aiterp.net/lucifer/new-server/models"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"log"
|
"log"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Bridges(r gin.IRoutes) {
|
func Bridges(r gin.IRoutes) {
|
||||||
@@ -96,6 +97,37 @@ func Bridges(r gin.IRoutes) {
|
|||||||
return bridge, nil
|
return bridge, nil
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
r.PUT("/:id/search", handler(func(c *gin.Context) (interface{}, error) {
|
||||||
|
var body struct {
|
||||||
|
TimeoutMS int64 `json:"timeoutMs"`
|
||||||
|
}
|
||||||
|
err := parseBody(c, &body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if body.TimeoutMS <= 0 {
|
||||||
|
body.TimeoutMS = 30000
|
||||||
|
}
|
||||||
|
|
||||||
|
bridge, err := config.BridgeRepository().Find(ctxOf(c), intParam(c, "id"))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
driver, err := config.DriverProvider().Provide(bridge.Driver)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
devices, err := driver.SearchDevices(ctxOf(c), bridge, time.Millisecond * time.Duration(body.TimeoutMS))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return devices, nil
|
||||||
|
}))
|
||||||
|
|
||||||
r.DELETE("/:id", handler(func(c *gin.Context) (interface{}, error) {
|
r.DELETE("/:id", handler(func(c *gin.Context) (interface{}, error) {
|
||||||
bridge, err := config.BridgeRepository().Find(ctxOf(c), intParam(c, "id"))
|
bridge, err := config.BridgeRepository().Find(ctxOf(c), intParam(c, "id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user