Files
2026-05-20 16:13:58 +08:00

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
}