67 lines
1.3 KiB
Go
67 lines
1.3 KiB
Go
package mediaCenter
|
|
|
|
import (
|
|
"github.com/fatih/structs"
|
|
"reflect"
|
|
"strings"
|
|
)
|
|
|
|
// MediaCenterService 媒资库相关服务调用
|
|
type MediaCenterService struct {
|
|
url string
|
|
proId string
|
|
secret string
|
|
}
|
|
|
|
type Config struct {
|
|
Url string
|
|
ProId string
|
|
Secret string
|
|
}
|
|
|
|
func NewMediaCenterService(c Config) *MediaCenterService {
|
|
return &MediaCenterService{
|
|
url: c.Url,
|
|
proId: c.ProId,
|
|
secret: c.Secret,
|
|
}
|
|
}
|
|
|
|
func (m *MediaCenterService) getParams(p interface{}) (params map[string]interface{}) {
|
|
req := structs.New(p)
|
|
fields := req.Fields()
|
|
params = make(map[string]interface{})
|
|
for _, field := range fields {
|
|
jsonTag := field.Tag("json")
|
|
tagList := strings.Split(jsonTag, ",")
|
|
key := field.Name()
|
|
omitempty := ""
|
|
if len(tagList) > 0 {
|
|
key = tagList[0]
|
|
}
|
|
if len(tagList) > 1 {
|
|
omitempty = tagList[1]
|
|
}
|
|
kind := reflect.TypeOf(field.Value()).Kind()
|
|
// 如果是0值忽略或者空指针,不需要传
|
|
if field.IsZero() && (kind == reflect.Ptr || omitempty == "omitempty") {
|
|
continue
|
|
}
|
|
if kind == reflect.Ptr {
|
|
// 通过指针取值
|
|
params[key] = reflect.ValueOf(field.Value()).Elem().Interface()
|
|
} else {
|
|
params[key] = field.Value()
|
|
}
|
|
|
|
}
|
|
params["pro_id"] = m.proId
|
|
params["sign"] = m.sign()
|
|
return
|
|
}
|
|
|
|
// TODO 暂时不需要加密
|
|
func (m *MediaCenterService) sign() string {
|
|
return ""
|
|
}
|