180 lines
3.6 KiB
Go
180 lines
3.6 KiB
Go
package proxy
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/base64"
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"stat/common/httpUtils"
|
|
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
apiDomain = "http://file.dhuqh.com/file/upload"
|
|
)
|
|
|
|
var (
|
|
header = map[string]string{"Content-Type": "application/json"}
|
|
)
|
|
|
|
const (
|
|
Success = 200
|
|
)
|
|
|
|
func UploadImg(fileName string, data []byte, domain string) (pathStr string, err error) {
|
|
r := objreq{
|
|
Name: fileName,
|
|
Data: base64.StdEncoding.EncodeToString(data),
|
|
}
|
|
jsonbytes, err := json.Marshal(r)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if len(domain) == 0 {
|
|
domain = apiDomain
|
|
}
|
|
url := domain
|
|
if !strings.Contains(domain, "/file/upload") {
|
|
url = domain + "/file/upload"
|
|
}
|
|
resp, err := httpUtils.Post(url, header, bytes.NewReader(jsonbytes))
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
var or objresp
|
|
if err = json.Unmarshal(resp.Data, &or); err != nil {
|
|
return
|
|
}
|
|
if or.Code != Success {
|
|
err = fmt.Errorf("上传失败:%s", or.Msg)
|
|
return
|
|
}
|
|
pathStr = or.Object.Name
|
|
return
|
|
}
|
|
|
|
func fileServer() (url string) {
|
|
return "http://ts.dhuqh.com"
|
|
}
|
|
|
|
func PostOk(baseInfo *BaseInfo, domain string) (result *VideoOkResult, err error) {
|
|
result = &VideoOkResult{}
|
|
paramJson, err := json.Marshal(baseInfo)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if len(domain) == 0 {
|
|
domain = fileServer()
|
|
}
|
|
url := domain
|
|
if !strings.Contains(domain, "/video/shard/info") {
|
|
url = domain + "/video/shard/info"
|
|
}
|
|
fr, err := httpUtils.Post(url, header, bytes.NewReader(paramJson))
|
|
if err != nil {
|
|
return
|
|
}
|
|
if err = json.Unmarshal(fr.Data, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return
|
|
}
|
|
|
|
func UploadVideo(domain string, body *ShardBody) (result *Result, err error) {
|
|
if body == nil {
|
|
return nil, errors.New("no video to upload")
|
|
}
|
|
if len(domain) == 0 {
|
|
domain = fileServer()
|
|
}
|
|
url := domain
|
|
if !strings.Contains(domain, "/video/shard/body") {
|
|
url = domain + "/video/shard/body"
|
|
}
|
|
buf, err := json.Marshal(body)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
resp, err := httpUtils.Post(url, header, bytes.NewBuffer(buf))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result = new(Result)
|
|
if err = json.Unmarshal(resp.Data, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return
|
|
}
|
|
|
|
func PostSearch(param *MediaSearchReq, domain string) (result *MediaSearchResp, err error) {
|
|
result = &MediaSearchResp{}
|
|
paramJson, err := json.Marshal(param)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if len(domain) == 0 {
|
|
domain = fileServer()
|
|
}
|
|
url := domain
|
|
if !strings.Contains(domain, "/video/search/list") {
|
|
url = domain + "/video/search/list"
|
|
}
|
|
fr, err := httpUtils.Post(url, header, bytes.NewReader(paramJson))
|
|
if err != nil {
|
|
return
|
|
}
|
|
if err = json.Unmarshal(fr.Data, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return
|
|
}
|
|
|
|
func PostUpdate(param *MediasUpdateReq, domain string) (result *MediasUpdateResp, err error) {
|
|
result = &MediasUpdateResp{}
|
|
paramJson, err := json.Marshal(param)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if len(domain) == 0 {
|
|
domain = fileServer()
|
|
}
|
|
url := domain
|
|
if !strings.Contains(domain, "/video/update") {
|
|
url = domain + "/video/update"
|
|
}
|
|
fr, err := httpUtils.Post(url, header, bytes.NewReader(paramJson))
|
|
if err != nil {
|
|
return
|
|
}
|
|
if err = json.Unmarshal(fr.Data, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return
|
|
}
|
|
|
|
func PostDelete(param *MediasDelReq, domain string) (result *MediasDelResp, err error) {
|
|
result = &MediasDelResp{}
|
|
paramJson, err := json.Marshal(param)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if len(domain) == 0 {
|
|
domain = fileServer()
|
|
}
|
|
url := domain
|
|
if !strings.Contains(domain, "/video/delete") {
|
|
url = domain + "/video/delete"
|
|
}
|
|
fr, err := httpUtils.Post(url, header, bytes.NewReader(paramJson))
|
|
if err != nil {
|
|
return
|
|
}
|
|
if err = json.Unmarshal(fr.Data, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return
|
|
}
|