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 }