package handler import ( "github.com/gin-gonic/gin" "laic-backend/common" "laic-backend/service" "laic-backend/vo" ) // GetLivePage 直播会话分页列表 func GetLivePage(c *gin.Context) { var req vo.LivePageReq _ = c.ShouldBindQuery(&req) if req.PageNum <= 0 { req.PageNum = 1 } if req.PageSize <= 0 { req.PageSize = 10 } page, busiErr := service.DefaultLiveService.GetPage(common.GetUserId(c), common.IsAdmin(c), &req) if busiErr != nil { common.FailWithBusiError(c, busiErr) return } common.OKWithData(c, page) } // CreateLiveSession 创建或加入机巢的唯一活动直播会话,并创建观看租约。 func CreateLiveSession(c *gin.Context) { dockID := c.Param("dockId") if dockID == "" { common.FailWithBusiError(c, common.ErrParam) return } var req vo.LiveSessionCreateReq _ = c.ShouldBindJSON(&req) result, busiErr := service.DefaultLiveService.Join(common.GetUserId(c), common.IsAdmin(c), dockID, &req) if busiErr != nil { common.FailWithBusiError(c, busiErr) return } common.OKWithData(c, result) } // GetLiveSession 获取指定直播会话。 func GetLiveSession(c *gin.Context) { dockID, sessionID := c.Param("dockId"), c.Param("streamSessionId") if dockID == "" || sessionID == "" { common.FailWithBusiError(c, common.ErrParam) return } session, busiErr := service.DefaultLiveService.GetSession(common.GetUserId(c), common.IsAdmin(c), dockID, sessionID) if busiErr != nil { common.FailWithBusiError(c, busiErr) return } common.OKWithData(c, session) } // HeartbeatLiveSession 续期当前用户的观看租约。 func HeartbeatLiveSession(c *gin.Context) { dockID, sessionID := c.Param("dockId"), c.Param("streamSessionId") if dockID == "" || sessionID == "" { common.FailWithBusiError(c, common.ErrParam) return } result, busiErr := service.DefaultLiveService.Heartbeat(common.GetUserId(c), common.IsAdmin(c), dockID, sessionID) if busiErr != nil { common.FailWithBusiError(c, busiErr) return } common.OKWithData(c, result) } // LeaveLiveSession 释放当前用户的观看租约。 func LeaveLiveSession(c *gin.Context) { dockID, sessionID := c.Param("dockId"), c.Param("streamSessionId") if dockID == "" || sessionID == "" { common.FailWithBusiError(c, common.ErrParam) return } if busiErr := service.DefaultLiveService.Leave(common.GetUserId(c), common.IsAdmin(c), dockID, sessionID); busiErr != nil { common.FailWithBusiError(c, busiErr) return } common.OK(c) } // StartLive 启动直播推流 func StartLive(c *gin.Context) { dockID := c.Param("dockId") if dockID == "" { common.FailWithBusiError(c, common.ErrParam) return } var req vo.LiveStartReq _ = c.ShouldBindJSON(&req) session, busiErr := service.DefaultLiveService.Start(common.GetUserId(c), common.IsAdmin(c), dockID, &req) if busiErr != nil { common.FailWithBusiError(c, busiErr) return } common.OKWithData(c, session) } func StopLive(c *gin.Context) { dockID := c.Param("dockId") if dockID == "" { common.FailWithBusiError(c, common.ErrParam) return } if busiErr := service.DefaultLiveService.Stop(common.GetUserId(c), common.IsAdmin(c), dockID); busiErr != nil { common.FailWithBusiError(c, busiErr) return } common.OK(c) } // GetLivePlayURL 获取直播播放地址 func GetLivePlayURL(c *gin.Context) { dockID := c.Param("dockId") if dockID == "" { common.FailWithBusiError(c, common.ErrParam) return } play, busiErr := service.DefaultLiveService.GetPlayURL(common.GetUserId(c), common.IsAdmin(c), dockID) if busiErr != nil { common.FailWithBusiError(c, busiErr) return } common.OKWithData(c, play) }