github.com/fzfile/BaiduPCS-Go@v0.0.0-20200606205115-4408961cf336/baidupcs/pcserror/pcserror.go (about) 1 // Package pcserror PCS错误包 2 package pcserror 3 4 import ( 5 "github.com/fzfile/BaiduPCS-Go/pcsutil/jsonhelper" 6 "io" 7 ) 8 9 type ( 10 // ErrType 错误类型 11 ErrType int 12 13 // Error 错误信息接口 14 Error interface { 15 error 16 SetJSONError(err error) 17 SetNetError(err error) 18 SetRemoteError() 19 GetOperation() string 20 GetErrType() ErrType 21 GetRemoteErrCode() int 22 GetRemoteErrMsg() string 23 GetError() error 24 } 25 ) 26 27 const ( 28 // ErrorTypeNoError 无错误 29 ErrorTypeNoError ErrType = iota 30 // ErrTypeInternalError 内部错误 31 ErrTypeInternalError 32 // ErrTypeRemoteError 远端服务器返回错误 33 ErrTypeRemoteError 34 // ErrTypeNetError 网络错误 35 ErrTypeNetError 36 // ErrTypeJSONParseError json 数据解析失败 37 ErrTypeJSONParseError 38 // ErrTypeOthers 其他错误 39 ErrTypeOthers 40 ) 41 42 const ( 43 // StrSuccess 操作成功 44 StrSuccess = "操作成功" 45 // StrInternalError 内部错误 46 StrInternalError = "内部错误" 47 // StrRemoteError 远端服务器返回错误 48 StrRemoteError = "远端服务器返回错误" 49 // StrNetError 网络错误 50 StrNetError = "网络错误" 51 // StrJSONParseError json 数据解析失败 52 StrJSONParseError = "json 数据解析失败" 53 ) 54 55 // DecodePCSJSONError 解析PCS JSON的错误 56 func DecodePCSJSONError(opreation string, data io.Reader) Error { 57 errInfo := NewPCSErrorInfo(opreation) 58 return HandleJSONParse(opreation, data, errInfo) 59 } 60 61 // DecodePanJSONError 解析Pan JSON的错误 62 func DecodePanJSONError(opreation string, data io.Reader) Error { 63 errInfo := NewPanErrorInfo(opreation) 64 return HandleJSONParse(opreation, data, errInfo) 65 } 66 67 // HandleJSONParse 处理解析json 68 func HandleJSONParse(op string, data io.Reader, info interface{}) (pcsError Error) { 69 var ( 70 err = jsonhelper.UnmarshalData(data, info) 71 errInfo = info.(Error) 72 ) 73 74 if errInfo == nil { 75 errInfo = NewPCSErrorInfo(op) 76 } 77 78 if err != nil { 79 errInfo.SetJSONError(err) 80 return errInfo 81 } 82 83 // 设置出错类型为远程错误 84 if errInfo.GetRemoteErrCode() != 0 { 85 errInfo.SetRemoteError() 86 return errInfo 87 } 88 89 return nil 90 }