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) (res Response, err error) { if msg.StatusCode == 200 { 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) (res Response, err error) { var msg myth.HTTPMessage if msg, err = myth.Get(uri, "", "", map[string]string{}); err != nil { return } res, 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) (res Response, 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 } res, err = checkError(msg) return } func postJSON(url string, data []byte) (res Response, 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 } res, 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 }