package wechat import ( "bytes" "encoding/json" "errors" "git.chuangxin1.com/cx/myth" ) func checkErrorWithBody(msg myth.HTTPMessage) (body []byte, err error) { if msg.StatusCode == 200 { var res ResponseMsg err = json.Unmarshal(msg.Body, &res) if err == nil { if res.ErrCode != ErrReqOk { err = errors.New(res.ErrMsg) } else { body = msg.Body } } } else { err = errors.New(`HTTP StatusCode not 200`) } return } func checkError(msg myth.HTTPMessage) (jq *myth.JSONQuery, err error) { if msg.StatusCode == 200 { jq, err = myth.NewJSONQuery(msg.Body) if err != nil { return } var code int code, err = jq.Int(`errcode`) if err == nil { if code == ErrReqOk { return } var msg string msg, err = jq.String("errmsg") if err != nil { return } err = errors.New(msg) } /* err = json.Unmarshal(msg.Body, &res) if err == nil { if res.ErrCode != ErrReqOk { err = errors.New(res.ErrMsg) } } // */ } else { err = errors.New(`HTTP StatusCode not 200`) } return } func getJSON(uri string) (jq *myth.JSONQuery, err error) { var msg myth.HTTPMessage if msg, err = myth.Get(uri, "", "", map[string]string{}); err != nil { return } jq, err = checkError(msg) return } func getBody(uri string) (body []byte, err error) { var msg myth.HTTPMessage if msg, err = myth.Get(uri, "", "", map[string]string{}); err != nil { return } body, err = checkErrorWithBody(msg) return } func postXML(url string, data []byte) (jq *myth.JSONQuery, err error) { var ( msg myth.HTTPMessage headers = make(map[string]string) ) headers["Accept-Encoding"] = "gzip, deflate, br" headers["Accept"] = "application/json" headers["Content-Type"] = "application/xml; charset=utf-8" msg, err = myth.Post(url, "", "", headers, bytes.NewReader(data)) if err != nil { return } jq, err = checkError(msg) return } func postJSON(url string, data []byte) (jq *myth.JSONQuery, err error) { var ( msg myth.HTTPMessage headers = make(map[string]string) ) headers["Accept-Encoding"] = "gzip, deflate, br" headers["Accept"] = "application/json" headers["Content-Type"] = "application/json; charset=utf-8" msg, err = myth.Post(url, "", "", headers, bytes.NewReader(data)) if err != nil { return } jq, err = checkError(msg) return } func postJSONBody(uri string, data []byte) (body []byte, err error) { var ( msg myth.HTTPMessage headers = make(map[string]string) ) headers["Accept-Encoding"] = "gzip, deflate, br" headers["Accept"] = "application/json" headers["Content-Type"] = "application/json; charset=utf-8" msg, err = myth.Post(uri, "", "", headers, bytes.NewReader(data)) if err != nil { return } body, err = checkErrorWithBody(msg) return }