You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.4 KiB
61 lines
1.4 KiB
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 |
|
}
|
|
|