You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
4.6 KiB
181 lines
4.6 KiB
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) |
|
}
|
|
|