62 lines
1.4 KiB
Go
62 lines
1.4 KiB
Go
package dao
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"go-common/library/log"
|
|
)
|
|
|
|
const _mask = "/dl/api/masks/v1"
|
|
|
|
func (d *Dao) maskURI() string {
|
|
return d.conf.Host.Mask + _mask
|
|
}
|
|
|
|
// GenerateMask ask AI to generate dm mask
|
|
func (d *Dao) GenerateMask(c context.Context, cid, mid int64, plat int8, priority int32, aid int64, duration int64, typeID int32) (err error) {
|
|
var (
|
|
res struct {
|
|
Code int64 `json:"errcode"`
|
|
Message string `json:"errmsg"`
|
|
}
|
|
params = make(map[string]interface{})
|
|
)
|
|
params["cid"] = cid
|
|
params["mask_platform"] = plat
|
|
params["priority"] = priority
|
|
params["mid"] = mid
|
|
params["aid"] = aid
|
|
params["duration"] = duration
|
|
params["region_2"] = typeID
|
|
data, err := json.Marshal(params)
|
|
if err != nil {
|
|
log.Error("json.Marshal(%v) error(%v)", params, err)
|
|
return
|
|
}
|
|
reader := bytes.NewReader(data)
|
|
req, err := http.NewRequest("POST", d.maskURI(), reader)
|
|
if err != nil {
|
|
log.Error("http.NewRequest error(%v)", err)
|
|
return
|
|
}
|
|
req.Header.Set("Content-Type", "application/json")
|
|
for i := 0; i < 3; i++ {
|
|
if err = d.httpCli.Do(c, req, &res); err != nil {
|
|
log.Error("d.httpCli.DO(%v) error(%v)", req, err)
|
|
continue
|
|
}
|
|
if res.Code != 200 {
|
|
err = fmt.Errorf("uri:%s,code:%d", d.maskURI(), res.Code)
|
|
log.Error("http code error(%v)", err)
|
|
continue
|
|
}
|
|
log.Info("send genarate mask request succeed(cid:%d)", cid)
|
|
break
|
|
}
|
|
return
|
|
}
|