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.
85 lines
2.2 KiB
85 lines
2.2 KiB
package agent |
|
|
|
import ( |
|
"bytes" |
|
"context" |
|
"crypto/tls" |
|
"encoding/json" |
|
"net" |
|
"net/http" |
|
"net/url" |
|
"strconv" |
|
"time" |
|
|
|
"go-common/app/service/main/videoup/conf" |
|
"go-common/app/service/main/videoup/model/archive" |
|
"go-common/library/log" |
|
xhttp "go-common/library/net/http/blademaster" |
|
) |
|
|
|
// Dao is redis dao. |
|
type Dao struct { |
|
c *conf.Config |
|
proxyClient *xhttp.Client |
|
pgcSubmitURI string |
|
} |
|
|
|
// New pub agent |
|
func New(c *conf.Config) (d *Dao) { |
|
d = &Dao{ |
|
c: c, |
|
proxyClient: xhttp.NewClient(c.HTTPClient.Read), |
|
pgcSubmitURI: c.PubAgent.PGCSubmit, |
|
} |
|
// add proxy |
|
proxyURL, _ := url.Parse(c.PubAgent.Proxy) |
|
dialer := &net.Dialer{ |
|
Timeout: time.Duration(c.HTTPClient.Write.Timeout), |
|
KeepAlive: time.Duration(c.HTTPClient.Write.KeepAlive), |
|
} |
|
transport := &http.Transport{ |
|
DialContext: dialer.DialContext, |
|
TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, |
|
Proxy: http.ProxyURL(proxyURL), |
|
} |
|
d.proxyClient.SetTransport(transport) |
|
return d |
|
} |
|
|
|
// AgentMsg send message to upper. |
|
func (d *Dao) AgentMsg(c context.Context, route, filename string) (err error) { |
|
query := "content_type=json&r=pgc_submit/msg_pgc_submit&filename=" + filename |
|
msg := &archive.PubAgentParam{ |
|
Route: route, |
|
Timestamp: strconv.FormatInt(time.Now().Unix(), 10), |
|
Filename: filename, |
|
Xcode: 0, |
|
VideoDesign: "[]", |
|
Submit: 1, |
|
} |
|
// new request |
|
bs, err := json.Marshal(msg) |
|
if err != nil { |
|
log.Error("json.Marshal pubagent msg error (%v) | msg(%v)", err, msg) |
|
return |
|
} |
|
req, err := http.NewRequest("POST", d.pgcSubmitURI+"?"+query, bytes.NewReader(bs)) |
|
if err != nil { |
|
log.Error("http.NewRequest error(%v) | uri(%s) msg(%v) req(%v)", err, d.pgcSubmitURI+"?"+query, msg, req) |
|
return |
|
} |
|
var res struct { |
|
Code int `json:"code"` |
|
Message string `json:"message"` |
|
} |
|
if err = d.proxyClient.Do(c, req, &res); err != nil { |
|
log.Error("AgentMsg d.httpW.Do error(%v) | uri(%s) msg(%v) req(%v)", err, d.pgcSubmitURI+"?"+query, msg, req) |
|
return |
|
} |
|
if res.Code != 0 { |
|
log.Error("AgentMsg res(%v) | uri(%s) msg(%v) req(%v)", res, d.pgcSubmitURI+"?"+query, msg, req) |
|
return |
|
} |
|
log.Info("AgentMsg success msg(%v) uri(%s)", msg, d.pgcSubmitURI+"?"+query) |
|
return |
|
}
|
|
|