bilibili-backup/app/service/video/stream-mng/server/http/stream.go
2019-04-22 02:59:20 +00:00

182 lines
4.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package http
import (
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"strconv"
"strings"
)
// 简单的流信息的处理和返回
// getStreamLastTime 得到流到最后推流时间
func getStreamLastTime(c *bm.Context) {
// 获取url中的room_id
params := c.Request.URL.Query()
room := params.Get("room_id")
roomID, err := strconv.ParseInt(room, 10, 64)
if err != nil || roomID <= 0 {
c.Set("output_data", "room_id is not right")
c.JSONMap(map[string]interface{}{"message": "room_id is not right"}, ecode.RequestErr)
c.Abort()
return
}
t, err := srv.GetStreamLastTime(c, roomID)
if err != nil {
log.Warn("%v", err)
c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.RequestErr)
c.Abort()
return
}
c.JSONMap(map[string]interface{}{"data": map[string]int64{"last_time": t}}, nil)
}
// getStreamNameByRoomID 根据房间号获取流名
func getStreamNameByRoomID(c *bm.Context) {
params := c.Request.URL.Query()
room := params.Get("room_id")
back := params.Get("back")
roomID, err := strconv.ParseInt(room, 10, 64)
if err != nil || roomID <= 0 {
c.Set("output_data", "room_id is not right")
c.JSONMap(map[string]interface{}{"message": "room_id is not right"}, ecode.RequestErr)
c.Abort()
return
}
flag := false
if back == "1" {
flag = true
}
info, err := srv.GetStreamNameByRoomID(c, roomID, flag)
if err != nil {
c.Set("output_data", err)
c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.RequestErr)
c.Abort()
return
}
c.Set("output_data", info)
if !flag && len(info) > 0 {
c.JSONMap(map[string]interface{}{"data": info[0]}, nil)
return
}
c.JSONMap(map[string]interface{}{"data": info}, nil)
}
// getRoomIdByStreamName 得到房间号,传递流名,可传入备用流名
func getRoomIDByStreamName(c *bm.Context) {
params := c.Request.URL.Query()
sname := params.Get("stream_name")
sname = strings.TrimSpace(sname)
if len(sname) == 0 {
c.Set("output_data", "stream name is empty")
c.JSONMap(map[string]interface{}{"message": "stream name is empty"}, ecode.RequestErr)
c.Abort()
return
}
rid, err := srv.GetRoomIDByStreamName(c, sname)
if err != nil {
c.Set("output_data", err)
c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.RequestErr)
c.Abort()
return
}
c.JSONMap(map[string]interface{}{"data": map[string]int64{"room_id": rid}}, nil)
}
// getAdapterStreamByStreamName 得到适配的流信息迁移PHP接口
func getAdapterStreamByStreamName(c *bm.Context) {
params := c.Request.URL.Query()
snames := params.Get("stream_names")
snames = strings.TrimSpace(snames)
if len(snames) == 0 {
c.Set("output_data", "stream names is empty")
c.JSONMap(map[string]interface{}{"message": "stream names is empty"}, ecode.RequestErr)
c.Abort()
return
}
// 最多查询500个数据
nameSlice := strings.Split(snames, ",")
if len(nameSlice) > 500 {
c.Set("output_data", "too many names")
c.JSONMap(map[string]interface{}{"message": "too many names"}, ecode.RequestErr)
c.Abort()
return
}
info := srv.GetAdapterStreamByStreamName(c, nameSlice)
c.Set("output_data", info)
c.JSONMap(map[string]interface{}{"data": info}, nil)
}
// getSrcByRoom 获取线路接口, 适配原PHP代码 线路名称+线路编码src+是否当前选择的线路
func getSrcByRoomID(c *bm.Context) {
params := c.Request.URL.Query()
room := params.Get("room_id")
roomID, err := strconv.ParseInt(room, 10, 64)
if err != nil || roomID <= 0 {
c.Set("output_data", "room_id is not right")
c.JSONMap(map[string]interface{}{"message": "room_id is not right"}, ecode.RequestErr)
c.Abort()
return
}
info, err := srv.GetSrcByRoomID(c, roomID)
if err != nil {
c.Set("output_data", err)
c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.RequestErr)
c.Abort()
return
}
c.Set("output_data", info)
c.JSONMap(map[string]interface{}{"data": info}, nil)
}
// getLineListByRoomID 得下线路信息, 和getSrcByRoomID 只有返回的格式不一样
func getLineListByRoomID(c *bm.Context) {
params := c.Request.URL.Query()
room := params.Get("room_id")
roomID, err := strconv.ParseInt(room, 10, 64)
if err != nil || roomID <= 0 {
c.Set("output_data", "room_id is not right")
c.JSONMap(map[string]interface{}{"message": "room_id is not right"}, ecode.RequestErr)
c.Abort()
return
}
info, err := srv.GetLineListByRoomID(c, roomID)
if err != nil {
c.Set("output_data", err)
c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.RequestErr)
c.Abort()
return
}
c.Set("output_data", info)
c.JSONMap(map[string]interface{}{"data": info}, nil)
}