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