/
describe_categories.go
66 lines (63 loc) · 2.18 KB
/
describe_categories.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package mediaassetsdk
import (
"encoding/json"
"errors"
"fmt"
"time"
"github.com/Tencent-Ti/ti-sign-go/tisign"
"github.com/Tencent-media-asset-system-sdk/media-asset-go-sdk/common"
mediaassetservice "github.com/Tencent-media-asset-system-sdk/media-asset-go-sdk/media_asset_service"
"github.com/Tencent-media-asset-system-sdk/media-asset-go-sdk/media_asset_service/request"
"github.com/Tencent-media-asset-system-sdk/media-asset-go-sdk/media_asset_service/response"
)
// RemoveMedias 返回可选媒体类型列表
func (m *MediaAssetClient) DescribeCategories() (
categortSet *response.DescribeCategoriesResponse, requestID string, err error) {
if m.Port == 0 {
m.Port = 80
}
action := "DescribeCategories"
service := "app-cdn4aowk"
version := "2021-02-26"
headerContent := tisign.HttpHeaderContent{
XTCAction: action, // 请求接口
XTCService: service, // 接口所属服务名
XTCVersion: version, // 接口版本
ContentType: "application/json", // http请求的content-type, 当前网关只支持: application/json multipart/form-data
HttpMethod: "POST", // http请求方法,当前网关只支持: POST GET
Host: m.Host, // 访问网关的host
}
uri := ""
header := map[string]string{}
req := &request.DescribeCategoriesRequest{}
req.TIBusinessID = m.TIBusinessID
req.TIProjectID = m.TIProjectID
req.Action = action
if m.Inner {
req.RequestID = common.GenerateRandomString(32)
req.Uin = m.InnerUserName
req.SubAccountUin = m.InnerUserName
uri = m.InnerMediaAssetEndPoint + "/" + action
header = nil
} else {
uri = fmt.Sprintf("http://%s:%d/gateway", m.Host, m.Port)
ts := tisign.NewTiSign(headerContent, m.SecretID, m.SecretKey)
header, _ = ts.CreateSignatureInfo()
}
maxTry := 3
rsp := &response.DescribeCategoriesResponse{}
timeSleep := 50 * time.Millisecond
for i := 0; i < maxTry; i++ {
err = mediaassetservice.HttpPost(uri, header, req, rsp)
if rsp.Response.ApiError != nil {
bys, _ := json.Marshal(rsp)
err = errors.New("Response error: " + string(bys))
}
if err == nil {
break
}
time.Sleep(timeSleep)
timeSleep *= 2
}
return rsp, rsp.Response.RequestID, err
}