|
|
- package wechat
-
- import (
- "bytes"
- "errors"
- "fmt"
- "io/ioutil"
- "log"
- "mime/multipart"
- "net/http"
-
- "git.tetele.net/tgo/helper"
- )
-
- //检测图片内容是否合规
- func ImgSecCheck(access_token, imgUrl string) error {
- var err error
- checkUrl := "https://api.weixin.qq.com/wxa/img_sec_check?access_token=%s"
-
- checkUrl = fmt.Sprintf(checkUrl, access_token)
-
- imgResponse, err := http.Get(imgUrl) //获取图片
-
- if err != nil {
- return err
- }
-
- defer imgResponse.Body.Close()
-
- if imgResponse.StatusCode != 200 {
- return errors.New("resp status:" + fmt.Sprint(imgResponse.StatusCode))
- }
-
- buf := new(bytes.Buffer)
- w := multipart.NewWriter(buf)
-
- bin, err := ioutil.ReadAll(imgResponse.Body)
- if err != nil {
- fmt.Println(err)
- return err
- }
-
- fw, err := w.CreateFormFile("media", "fijgrpgpegjrepoikr")
- if err != nil {
- fmt.Println(err)
- return err
- }
-
- _, err = fw.Write(bin)
-
- if err != nil {
- fmt.Println(err)
- return err
- }
-
- w.Close()
-
- req, err := http.NewRequest("POST", checkUrl, buf)
-
- if err != nil {
- fmt.Println("req err: ", err)
- return err
- }
- req.Header.Set("Content-Type", w.FormDataContentType())
-
- checkResponse, err := http.DefaultClient.Do(req)
-
- if err != nil {
- fmt.Println("resp err: ", err)
- return err
- }
- defer checkResponse.Body.Close()
-
- if checkResponse.StatusCode != 200 {
- return errors.New("resp status:" + fmt.Sprint(checkResponse.StatusCode))
- }
-
- response, err := ioutil.ReadAll(checkResponse.Body)
-
- if err != nil {
- return err
- }
-
- responseData := map[string]interface{}{}
- err = json.Unmarshal(response, &responseData)
- if err != nil {
- // 有错,但能解析
- log.Println(err)
- }
-
- if _, exist := responseData["errcode"]; exist && helper.ToInt(responseData["errcode"]) != 0 {
-
- return errors.New(helper.ToStr(responseData["errmsg"]))
- }
-
- return nil
- }
-
- //检测文本内容是否合规
- func MsgSecCheck(access_token string, data map[string]interface{}, retry ...int) error {
- var err error
-
- data["version"] = 2
-
- checkUrl := "https://api.weixin.qq.com/wxa/msg_sec_check?access_token=%s"
-
- checkUrl = fmt.Sprintf(checkUrl, access_token)
-
- requestDataJson, err := json.Marshal(data)
-
- if err != nil {
- return err
- }
-
- response, err := PostJson(checkUrl, requestDataJson)
-
- if err != nil {
- return err
- }
-
- responseData := map[string]interface{}{}
- err = json.Unmarshal(response, &responseData)
- if err != nil {
- // 有错,但能解析
- log.Println(err)
- }
-
- if _, exist := responseData["errcode"]; exist && helper.ToInt(responseData["errcode"]) != 0 {
- return errors.New(helper.ToStr(responseData["errmsg"]))
- }
-
- resultData, err := helper.InterfaceToMapInterface(responseData["result"])
-
- if err != nil {
- return err
- }
-
- if resultData["suggest"] != "pass" {
- return errors.New("内容不能包含" + GetCheckContentByCode(helper.ToStr(resultData["label"])))
- }
-
- return nil
- }
-
- func GetCheckContentByCode(code string) string {
- codeList := map[string]string{
- "10001": "广告",
- "20001": "时政",
- "20002": "色情",
- "20003": "辱骂",
- "20006": "违法犯罪",
- "20008": "欺诈",
- "20012": "低俗",
- "20013": "版权",
- "21000": "其他",
- }
-
- return codeList[code]
- }
|