github.com/fzfile/BaiduPCS-Go@v0.0.0-20200606205115-4408961cf336/baidupcs/pcserror/panerrorinfo.go (about) 1 package pcserror 2 3 import ( 4 "fmt" 5 ) 6 7 type ( 8 // PanErrorInfo 网盘网页的api错误 9 PanErrorInfo struct { 10 Operation string 11 ErrType ErrType 12 Err error 13 ErrNo int `json:"errno"` 14 // ErrMsg string `json:"err_msg"` 15 } 16 ) 17 18 // NewPanErrorInfo 提供operation操作名称, 返回 *PanErrorInfo 19 func NewPanErrorInfo(operation string) *PanErrorInfo { 20 return &PanErrorInfo{ 21 Operation: operation, 22 ErrType: ErrorTypeNoError, 23 } 24 } 25 26 // SetJSONError 设置JSON错误 27 func (pane *PanErrorInfo) SetJSONError(err error) { 28 pane.ErrType = ErrTypeJSONParseError 29 pane.Err = err 30 } 31 32 // SetNetError 设置网络错误 33 func (pane *PanErrorInfo) SetNetError(err error) { 34 pane.ErrType = ErrTypeNetError 35 pane.Err = err 36 } 37 38 // SetRemoteError 设置远端服务器错误 39 func (pane *PanErrorInfo) SetRemoteError() { 40 pane.ErrType = ErrTypeRemoteError 41 } 42 43 // GetOperation 获取操作 44 func (pane *PanErrorInfo) GetOperation() string { 45 return pane.Operation 46 } 47 48 // GetErrType 获取错误类型 49 func (pane *PanErrorInfo) GetErrType() ErrType { 50 return pane.ErrType 51 } 52 53 // GetRemoteErrCode 获取远端服务器错误代码 54 func (pane *PanErrorInfo) GetRemoteErrCode() int { 55 return pane.ErrNo 56 } 57 58 // GetRemoteErrMsg 获取远端服务器错误消息 59 func (pane *PanErrorInfo) GetRemoteErrMsg() string { 60 return FindPanErr(pane.ErrNo) 61 } 62 63 // GetError 获取原始错误 64 func (pane *PanErrorInfo) GetError() error { 65 return pane.Err 66 } 67 68 func (pane *PanErrorInfo) Error() string { 69 if pane.Operation == "" { 70 if pane.Err != nil { 71 return pane.Err.Error() 72 } 73 return StrSuccess 74 } 75 76 switch pane.ErrType { 77 case ErrTypeInternalError: 78 return fmt.Sprintf("%s: %s, %s", pane.Operation, StrInternalError, pane.Err) 79 case ErrTypeJSONParseError: 80 return fmt.Sprintf("%s: %s, %s", pane.Operation, StrJSONParseError, pane.Err) 81 case ErrTypeNetError: 82 return fmt.Sprintf("%s: %s, %s", pane.Operation, StrNetError, pane.Err) 83 case ErrTypeRemoteError: 84 if pane.ErrNo == 0 { 85 return fmt.Sprintf("%s: %s", pane.Operation, StrSuccess) 86 } 87 88 errmsg := FindPanErr(pane.ErrNo) 89 return fmt.Sprintf("%s: 遇到错误, %s, 代码: %d, 消息: %s", pane.Operation, StrRemoteError, pane.ErrNo, errmsg) 90 case ErrTypeOthers: 91 if pane.Err == nil { 92 return fmt.Sprintf("%s: %s", pane.Operation, StrSuccess) 93 } 94 95 return fmt.Sprintf("%s, 遇到错误, %s", pane.Operation, pane.Err) 96 default: 97 panic("panerrorinfo: unknown ErrType") 98 } 99 } 100 101 // FindPanErr 根据 ErrNo, 解析网盘错误信息 102 func FindPanErr(errno int) (errmsg string) { 103 switch errno { 104 case 0: 105 return StrSuccess 106 case -1: 107 return "由于您分享了违反相关法律法规的文件,分享功能已被禁用,之前分享出去的文件不受影响。" 108 case -2: 109 return "用户不存在,请刷新页面后重试" 110 case -3: 111 return "文件不存在,请刷新页面后重试" 112 case -4: 113 return "登录信息有误,请重新登录试试" 114 case -5: 115 return "host_key和user_key无效" 116 case -6: 117 return "请重新登录" 118 case -7: 119 return "该分享已删除或已取消" 120 case -8: 121 return "该分享已经过期" 122 case -9: 123 return "文件不存在" 124 case -10: 125 return "分享外链已经达到最大上限100000条,不能再次分享" 126 case -11: 127 return "验证cookie无效" 128 case -12: 129 return "访问密码错误" 130 case -14: 131 return "对不起,短信分享每天限制20条,你今天已经分享完,请明天再来分享吧!" 132 case -15: 133 return "对不起,邮件分享每天限制20封,你今天已经分享完,请明天再来分享吧!" 134 case -16: 135 return "对不起,该文件已经限制分享!" 136 case -17: 137 return "文件分享超过限制" 138 case -19: 139 return "需要输入验证码" 140 case -21: 141 return "分享已取消或分享信息无效" 142 case -30: 143 return "文件已存在" 144 case -31: 145 return "文件保存失败" 146 case -33: 147 return "一次支持操作999个,减点试试吧" 148 case -62: 149 return "可能需要输入验证码" 150 case -70: 151 return "你分享的文件中包含病毒或疑似病毒,为了你和他人的数据安全,换个文件分享吧" 152 case 2: 153 return "参数错误" 154 case 3: 155 return "未登录或帐号无效" 156 case 4: 157 return "存储好像出问题了,请稍候再试" 158 case 105: 159 return "啊哦,链接错误没找到文件,请打开正确的分享链接" 160 case 108: 161 return "文件名有敏感词,优化一下吧" 162 case 110: 163 return "分享次数超出限制,可以到“我的分享”中查看已分享的文件链接" 164 case 112: 165 return "页面已过期,请刷新后重试" 166 case 113: 167 return "签名错误" 168 case 114: 169 return "当前任务不存在,保存失败" 170 case 115: 171 return "该文件禁止分享" 172 case 132: 173 return "您的帐号可能存在安全风险,为了确保为您本人操作,请先进行安全验证。" 174 default: 175 return "未知错误" 176 } 177 }