diff --git a/router/handler/onvif/connection.go b/router/handler/onvif/connection.go index 74089fc..0976aad 100644 --- a/router/handler/onvif/connection.go +++ b/router/handler/onvif/connection.go @@ -41,7 +41,7 @@ func CreateConnection(c *gin.Context) { } func GetConnections(c *gin.Context) { - devices := make(map[string]interface{}) + devices := make(map[string]any) for xaddr, conn := range conns { info, err := conn.GetDeviceInfo() @@ -56,6 +56,23 @@ func GetConnections(c *gin.Context) { response.NewResponse().WithData(devices).Send(c) } +func ZBXConnectionDiscovery(c *gin.Context) { + type ZBXDiscovery struct { + Xaddr string `json:"{#XADDR}"` + } + + arr := make([]ZBXDiscovery, 0) + for xaddr := range conns { + arr = append(arr, ZBXDiscovery{ + Xaddr: xaddr, + }) + } + + c.JSON(http.StatusOK, gin.H{ + "data": arr, + }) +} + func GetConnectionByXaddr(c *gin.Context) { xaddr := c.Param("xaddr") diff --git a/router/router.go b/router/router.go index 9638a9f..54329fd 100644 --- a/router/router.go +++ b/router/router.go @@ -9,17 +9,19 @@ import ( func SetupRoutes(r *gin.Engine) { r.GET("/", handler.Hello) - userGroup := r.Group("/onvif") + onvifGroup := r.Group("/onvif") { - connectionGroup := userGroup.Group("/connections") + connectionGroup := onvifGroup.Group("/connections") { connectionGroup.POST("/", onvif.CreateConnection) connectionGroup.GET("/", onvif.GetConnections) connectionGroup.GET("/:xaddr", onvif.GetConnectionByXaddr) connectionGroup.DELETE("/:xaddr", onvif.DeleteConnection) + + connectionGroup.POST("/zbxDiscovery", onvif.ZBXConnectionDiscovery) } - subscriptionGroup := userGroup.Group("/subscriptions") + subscriptionGroup := onvifGroup.Group("/subscriptions") { subscriptionGroup.POST("/:xaddr", onvif.CreateEventSubscription) subscriptionGroup.POST("/:xaddr/callback", onvif.EventNotifyCallback)