refactor: 迁移 service 代码逻辑
This commit is contained in:
79
router/handler/onvif/session.go
Normal file
79
router/handler/onvif/session.go
Normal file
@ -0,0 +1,79 @@
|
||||
package onvif
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"net/http"
|
||||
"onvif-agent/response"
|
||||
"onvif-agent/service/onvif"
|
||||
)
|
||||
|
||||
type CreateSessionRequest struct {
|
||||
Xaddr string `json:"xaddr"`
|
||||
Username string `json:"username"`
|
||||
Password string `json:"password"`
|
||||
}
|
||||
|
||||
func CreateSession(c *gin.Context) {
|
||||
var req CreateSessionRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.NewResponse().Error(err).Send(c)
|
||||
return
|
||||
}
|
||||
|
||||
session, err := onvif.NewSession(req.Xaddr, req.Username, req.Password)
|
||||
if err != nil {
|
||||
response.NewResponse().Error(err).Send(c)
|
||||
return
|
||||
}
|
||||
|
||||
info, err := session.GetDeviceInfo()
|
||||
if err != nil {
|
||||
response.NewResponse().Error(err).Send(c)
|
||||
return
|
||||
}
|
||||
|
||||
onvif.Sessions[session.Device.GetDeviceParams().Xaddr] = session
|
||||
|
||||
response.NewResponse().WithData(info).Send(c)
|
||||
}
|
||||
|
||||
func GetSessions(c *gin.Context) {
|
||||
devices := make(map[string]any)
|
||||
|
||||
for xaddr, session := range onvif.Sessions {
|
||||
info, err := session.GetDeviceInfo()
|
||||
if err != nil {
|
||||
response.NewResponse().Error(err).Send(c)
|
||||
return
|
||||
}
|
||||
|
||||
devices[xaddr] = info
|
||||
}
|
||||
|
||||
response.NewResponse().WithData(devices).Send(c)
|
||||
}
|
||||
|
||||
func GetSessionByXaddr(c *gin.Context) {
|
||||
xaddr := c.Param("xaddr")
|
||||
|
||||
session := onvif.Sessions[xaddr]
|
||||
if session == nil {
|
||||
response.NewResponse().Fail("Session not found").WithCode(http.StatusNotFound).Send(c)
|
||||
return
|
||||
}
|
||||
|
||||
info, err := session.GetDeviceInfo()
|
||||
if err != nil {
|
||||
response.NewResponse().Error(err).Send(c)
|
||||
return
|
||||
}
|
||||
|
||||
response.NewResponse().WithData(info).Send(c)
|
||||
}
|
||||
|
||||
func DeleteSession(c *gin.Context) {
|
||||
xaddr := c.Param("xaddr")
|
||||
delete(onvif.Sessions, xaddr)
|
||||
|
||||
response.NewResponse().Success().Send(c)
|
||||
}
|
Reference in New Issue
Block a user