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.
69 lines
1.9 KiB
69 lines
1.9 KiB
package http |
|
|
|
import ( |
|
"encoding/json" |
|
"go-common/app/service/video/stream-mng/service" |
|
"go-common/library/ecode" |
|
bm "go-common/library/net/http/blademaster" |
|
"io/ioutil" |
|
) |
|
|
|
// streamValidate 流鉴权接口 |
|
func streamValidate(c *bm.Context) { |
|
var vp service.ValidateParams |
|
switch c.Request.Header.Get("Content-Type") { |
|
case "application/x-www-form-urlencoded": |
|
if len(c.Request.PostForm) == 0 { |
|
c.Set("output_data", "stream_valid_err = empty post body") |
|
c.JSONMap(map[string]interface{}{"message": "empty post body"}, ecode.RequestErr) |
|
c.Abort() |
|
return |
|
} |
|
vp.Key = c.Request.PostFormValue("key") |
|
vp.StreamName = c.Request.PostFormValue("stream_name") |
|
vp.Src = c.Request.PostFormValue("src") |
|
vp.Type = json.Number(c.Request.PostFormValue("type")) |
|
default: |
|
defer c.Request.Body.Close() |
|
|
|
b, err := ioutil.ReadAll(c.Request.Body) |
|
if err != nil { |
|
c.Set("output_data", err.Error()) |
|
c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.RequestErr) |
|
c.Abort() |
|
return |
|
} |
|
|
|
if len(b) == 0 { |
|
c.Set("output_data", "stream_valid_err = empty params") |
|
c.JSONMap(map[string]interface{}{"message": "empty params"}, ecode.RequestErr) |
|
c.Abort() |
|
return |
|
} |
|
|
|
err = json.Unmarshal(b, &vp) |
|
|
|
if err != nil { |
|
c.Set("output_data", err.Error()) |
|
c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.RequestErr) |
|
c.Abort() |
|
return |
|
} |
|
} |
|
|
|
c.Set("input_params", vp) |
|
|
|
permission, err := srv.CheckStreamValidate(c, &vp, false) |
|
if err != nil { |
|
c.Set("output_data", err.Error()) |
|
if err.Error() == "room is closed" { |
|
c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.LimitExceed) |
|
} else { |
|
c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.RequestErr) |
|
} |
|
c.Abort() |
|
return |
|
} |
|
c.Set("output_data", permission) |
|
c.JSONMap(map[string]interface{}{"data": map[string]int{"permission": permission}}, nil) |
|
}
|
|
|