mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-04 12:52:27 +08:00
return *CommonError instead of errorString (#568)
This commit is contained in:
@@ -8,10 +8,15 @@ import (
|
|||||||
|
|
||||||
// CommonError 微信返回的通用错误json
|
// CommonError 微信返回的通用错误json
|
||||||
type CommonError struct {
|
type CommonError struct {
|
||||||
|
apiName string
|
||||||
ErrCode int64 `json:"errcode"`
|
ErrCode int64 `json:"errcode"`
|
||||||
ErrMsg string `json:"errmsg"`
|
ErrMsg string `json:"errmsg"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *CommonError) Error() string {
|
||||||
|
return fmt.Sprintf("%s Error , errcode=%d , errmsg=%s", c.apiName, c.ErrCode, c.ErrMsg)
|
||||||
|
}
|
||||||
|
|
||||||
// DecodeWithCommonError 将返回值按照CommonError解析
|
// DecodeWithCommonError 将返回值按照CommonError解析
|
||||||
func DecodeWithCommonError(response []byte, apiName string) (err error) {
|
func DecodeWithCommonError(response []byte, apiName string) (err error) {
|
||||||
var commError CommonError
|
var commError CommonError
|
||||||
@@ -19,8 +24,9 @@ func DecodeWithCommonError(response []byte, apiName string) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
commError.apiName = apiName
|
||||||
if commError.ErrCode != 0 {
|
if commError.ErrCode != 0 {
|
||||||
return fmt.Errorf("%s Error , errcode=%d , errmsg=%s", apiName, commError.ErrCode, commError.ErrMsg)
|
return &commError
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -45,7 +51,11 @@ func DecodeWithError(response []byte, obj interface{}, apiName string) error {
|
|||||||
return fmt.Errorf("errcode or errmsg is invalid")
|
return fmt.Errorf("errcode or errmsg is invalid")
|
||||||
}
|
}
|
||||||
if errCode.Int() != 0 {
|
if errCode.Int() != 0 {
|
||||||
return fmt.Errorf("%s Error , errcode=%d , errmsg=%s", apiName, errCode.Int(), errMsg.String())
|
return &CommonError{
|
||||||
|
apiName: apiName,
|
||||||
|
ErrCode: errCode.Int(),
|
||||||
|
ErrMsg: errMsg.String(),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
55
util/error_test.go
Normal file
55
util/error_test.go
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
package util
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
var okErrData string = `{"errcode": 0}`
|
||||||
|
var errData string = `{"errcode": 43101, "errmsg": "user refuse to accept the msg"}`
|
||||||
|
var expectError string = "Send Error , errcode=43101 , errmsg=user refuse to accept the msg"
|
||||||
|
|
||||||
|
func TestDecodeWithCommonErrorNoError(t *testing.T) {
|
||||||
|
err := DecodeWithCommonError([]byte(okErrData), "Send")
|
||||||
|
if err != nil {
|
||||||
|
t.Error("DecodeWithCommonError should not return error")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDecodeWithCommonError(t *testing.T) {
|
||||||
|
err := DecodeWithCommonError([]byte(errData), "Send")
|
||||||
|
if err == nil {
|
||||||
|
t.Error("DecodeWithCommonError should return error")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
cErr, ok := err.(*CommonError)
|
||||||
|
if !ok {
|
||||||
|
t.Errorf("DecodeWithCommonError should return *CommonError but %T", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if !(cErr.ErrCode == 43101 && cErr.ErrMsg == "user refuse to accept the msg" && cErr.Error() == expectError) {
|
||||||
|
t.Error("DecodeWithCommonError return bad *CommonError")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDecodeWithError(t *testing.T) {
|
||||||
|
type DE struct {
|
||||||
|
CommonError
|
||||||
|
}
|
||||||
|
var obj DE
|
||||||
|
err := DecodeWithError([]byte(errData), &obj, "Send")
|
||||||
|
if err == nil {
|
||||||
|
t.Error("DecodeWithError should return error")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
cErr, ok := err.(*CommonError)
|
||||||
|
if !ok {
|
||||||
|
t.Errorf("DecodeWithError should return *CommonError but %T", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if !(cErr.ErrCode == 43101 && cErr.ErrMsg == "user refuse to accept the msg" && cErr.Error() == expectError) {
|
||||||
|
t.Error("DecodeWithError return bad *CommonError")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user