github.com/qjfoidnh/BaiduPCS-Go@v0.0.0-20231011165705-caa18a3765f3/baidupcs/pcserror/pcserror.go (about) 1 // Package pcserror PCS错误包 2 package pcserror 3 4 import ( 5 "github.com/qjfoidnh/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 // DecodeXPanJSONError 解析XPan JSON的错误 68 func DecodeXPanJSONError(opreation string, data io.Reader) Error { 69 errInfo := NewXPanErrorInfo(opreation) 70 return HandleJSONParse(opreation, data, errInfo) 71 } 72 73 // HandleJSONParse 处理解析json 74 func HandleJSONParse(op string, data io.Reader, info interface{}) (pcsError Error) { 75 var ( 76 err = jsonhelper.UnmarshalData(data, info) 77 errInfo = info.(Error) 78 ) 79 80 if errInfo == nil { 81 errInfo = NewPCSErrorInfo(op) 82 } 83 84 if err != nil { 85 errInfo.SetJSONError(err) 86 return errInfo 87 } 88 89 // 设置出错类型为远程错误 90 if errInfo.GetRemoteErrCode() != 0 { 91 errInfo.SetRemoteError() 92 return errInfo 93 } 94 95 return nil 96 }