• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef DRIVE_KIT_ERROR_H
17 #define DRIVE_KIT_ERROR_H
18 
19 #include <iostream>
20 #include <vector>
21 namespace Json {
22 class Value;
23 }
24 
25 namespace DriveKit {
26 enum class DKLocalErrorCode {
27     NO_ERROR = 0,
28     IPC_CONNECT_FAILED,
29     IPC_SEND_FAILED,
30     DATA_TYPE_ERROR,
31     ACCESS_DENIED,
32     ATOMIC_ERROR,
33     AUTHENTICATION_FAILED,
34     AUTHENTICATION_REQUIRED,
35     BAD_REQUEST,
36     CONFLICT,
37     EXISTS,
38     INTERNAL_ERROR,
39     NOT_FOUND,
40     QUOTA_EXCEEDED,
41     SIGN_IN_FAILED,
42     THROTTLED,
43     TRY_AGAIN_LATER,
44     VALIDATING_REFERENCE_ERROR,
45     UNIQUE_FIELD_ERROR,
46     ZONE_NOT_FOUND,
47     UNKNOWN_ERROR,
48     NETWORK_ERROR,
49     SERVICE_UNAVAILABLE,
50     INVALID_ARGUMENTS,
51     UNEXPECTED_SERVER_RESPONSE,
52     CONFIGURATION_ERROR,
53     SHARE_UI_TIMEOUT,
54     BAD_ALLOC_MEMORY,
55     LOCAL_SPACE_FULL, // 本地空间不足
56     TASK_CANCEL_FAIL,
57     TASK_CANCEL,
58     DECRYPT_FAIL,
59     OPEN_FILE_FAIL,
60     INIT_DECRYPT_FAIL,
61     DOWNLOAD_REQUEST_ERROR,
62     GET_DECRYPT_FAIL,
63     GET_ASSET_FAIL,
64     CREAT_TEMP_FILE_FAIL,
65     ADD_SLICE_TASK_FAIL,
66     SYNC_SWITCH_OFF,
67     DOWNLOAD_PATH_ERROR,
68     PREAD_MULTI_SLICE_NO_SUPPORT,
69     RENAME_TEMPFILE_FAIL,
70     SLTCE_NOT_DOWN_ALL,
71 };
72 
73 enum class DKServerErrorCode {
74     ACCESS_DENIED = 403,
75     ATOMIC_ERROR = 400,
76     AUTHENTICATION_FAILED = 401,
77     AUTHENTICATION_REQUIRED = 421,
78     BAD_REQUEST = 400,
79     CONFLICT = 409,
80     EXISTS = 409,
81     INTERNAL_ERROR = 500,
82     NOT_FOUND = 404,
83     QUOTA_EXCEEDED = 413,
84     THROTTLED = 429,
85     TRY_AGAIN_LATER = 503,
86     VALIDATING_REFERENCE_ERROR = 412,
87     ZONE_NOT_FOUND = 404,
88     UID_EMPTY = 1003,         // 云空间未登录, userid为空
89     RESPONSE_EMPTY = 1004,    // 服务器端返回为空
90     RESPONSE_NOT_OK = 1005,   // 服务端返回结果错误
91     NO_NETWORK = 1006,        // 云空间没有网络
92     GRS_NULL = 1007,          // grs为空
93     NETWORK_ERROR = 1008,     // 云空间网络异常
94     ERROR_PARAM = 1009,       // 参数错误
95     GET_AT_FAIL = 1010,       // 获取AT失效
96     ASSET_NOT_EXIST = 1011,   // Asset不存在
97     DELETE_ASSET_FAIL = 1012, // 删除Asset失败
98     SWITCH_OFF = 1013,        // 同步开关关闭
99 };
100 
101 enum class DKDetailErrorCode {
102     LACK_OF_PARAM = 4001,                                       //缺少入参
103     PARAM_INVALID = 4002,                                       //参数校验失败
104     PARAM_VALUE_NOT_SUPPORT = 4003,                             //参数不支持
105     PARAM_EXPIRED = 4004,                                       //入参已失效
106     SITE_NOT_FOUND = 4005,                                      //站点信息未知
107     NON_SUPPORT_CHARACTER_INCLUDED = 4006,                      //包含有不支持的字符
108     ILLEGAL_CHARACTER_INCLUDED = 4007,                          //包含有非法的字符
109     PARAMETER_LENGTH_BEYOND_LIMIT = 4008,                       //参数长度超过限制
110     PARENTFOLDER_NOT_FOUND = 4009,                              //父目录不在
111     TOKEN_CFG_INVALID = 4010,                                   //token配置项无效
112     USER_NOT_AUTHORIZED = 4011,                                 //用户没有授权
113     APP_NOT_AUTHORIZED = 4012,                                  //App没有授权
114     TICKET_INVALID = 4013,                                      //ticket无效
115     GRANT_CANCEL = 4014,                                        //取消授权
116     LOGIN_FAILED = 4015,                                        //登录失败
117     SESSION_TIMEOUT = 4016,                                     //会话过期
118     FORCE_RELOGIN = 4017,                                       //强制重新登录账号
119     FLOW_ID_NOT_MATCH = 4020,                                   //越权
120     DATA_MIGRATING = 4031,                                      //数据割接未完成
121     SERVICE_NOT_SUPPORT = 4032,                                 //服务未开放
122     AGREEMENT_NOT_SIGNED = 4033,                                //协议未签署
123     CROSS_SITE_NOT_SUPPORT = 4034,                              //跨站点功能限制
124     INSUFFICIENT_SCOPE = 4035,                                  //Scope校验失败
125     INSUFFICIENT_PERMISSION = 4036,                             //无此操作权限
126     OPERATION_NOT_COMPLETE = 4037,                              //由于错误无法完成操作
127     OUTER_SERVICE_ERROR = 4038,                                 //外部服务错误且无法恢复
128     SPACE_FULL = 4039,                                          //用户空间不足
129     CONTENT_NOT_FIND = 4041,                                    //内容未发现
130     CONTENT_UNAVAILABLE = 4042,                                 //内容解析失败
131     CHANNEL_NOT_FOUND = 4043,                                   //订阅未发现
132     THUMBNAIL_NOT_FOUND = 4044,                                 //缩略图不存在
133     SHARE_LINK_NOT_FOUND = 4045,                                //分享链接不存在
134     TEMP_DATA_INVALID = 4046,                                   //临时数据无效
135     FILE_NOT_FOUND = 4047,                                      //实体数据不存在
136     APP_NOT_EXISTS = 4048,                                      //APP不存在
137     CATEGORY_NOT_EXISTS = 4049,                                 //分类不存在
138     SHARE_CONTENT_NOT_EXISTS = 4050,                            //分享内容不存在
139     THUMBNAIL_GENERATE_FAILED = 4051,                           //缩略图生成失败
140     VERSION_CONFLICT = 4090,                                    //版本冲突
141     LOCK_FAILED = 4091,                                         //获取锁失败
142     SILENCE_USER_FAILED = 4092,                                 //沉默用户拒绝失败
143     FILE_USING_FORBIDDEN_OP = 4093,                             //文件正在使用禁止操作
144     CURSOR_EXPIRED = 4100,                                      //游标过期
145     TEMP_DATA_CLEARD = 4101,                                    //临时数据已经被清理
146     CLOUD_DATA_UPDATED = 4121,                                  //云端数据已被更新
147     USER_REQUEST_TOO_MANY = 4291,                               //用户请求太频繁
148     APP_REQUEST_TOO_MANY = 4292,                                //应用请求太频繁
149     FLOW_CONTROL = 4293,                                        //用户请求流控
150     USER_REQUEST_ERROR_TOO_MANY = 4294,                         //用户请求错误次数超过限制
151     PARTIAL_FILE_NOT_SUPPORT_SHARE = 4905,                      //部分文件不支持分享
152     PARENTFOLDER_TRASHED = 4906,                                //父目录被删除到回收站
153     ACCOUNT_NAME_WRONG = 4907,                                  //用户账号错误
154     CIPHER_INVALID = 4908,                                      //用户秘钥已经失效
155     DUPLICATED_ID = 4909,                                       //id已存在
156     VUDID_IMEI_INVALID = 4910,                                  //VUDID转换IMEI失败
157     FILE_NOT_SUPPORT_SHARE = 4911,                              //所有文件不支持分享
158     EXTERNAL_LINK_NOT_AUTHORIZED = 4912,                        //外部链接没有授权
159     ORIGINAL_NOT_EXSIT = 4913,                                  //源文件不存在
160     ABNORMAL_DOWNLOAD = 4931,                                   //用户异常下载
161     SAME_FILENAME_NOT_ALLOWED = 4932,                           //禁止重复文件名
162     CANNOT_USE_SERVICE = 4933,                                  //无法为此用户提供服务
163     FILES_NUM_BEYOND_LIMIT = 4934,                              //下载文件数超过限制
164     FILES_SIZE_BEYOND_LIMIT = 4935,                             //下载文件大小超过限制
165     TIER_BEYOND_LIMIT = 4936,                                   //层级超过限制
166     HISTORYVERSIONS_BEYOND_LIMIT = 4937,                        //历史版本数超过限制
167     COPY_FORBIDDEN = 4938,                                      //此文件禁止拷贝
168     USER_SUSPEND_SERVICE = 4939,                                //用户停用服务
169     FILE_VERSION_CONFLICT = 4940,                               //文件版本冲突
170     REAL_NAME_AUTHENTICATION_FAILED = 4941,                      //实名认证失败
171     SHARE_LINK_EXPIRED = 4942,                                  //分享链接已过期
172     RECEIVER_BEYOND_LIMIT = 4943,                               //分享人数达到限制
173     CONTENT_SHARE_NOT_ALLOWED = 4944,                           //内容禁止分享
174     DATA_NUMBER_BEYOND_LIMIT = 4945,                            //云端数据超过限制
175     FORBIDDEN_USER = 4946,                                      //禁止用户操作
176     PARAM_CAN_NOT_UPDATE = 4947,                                //参数禁止更新
177     HORIZONTAL_PRIVILEGE_ESCALATION = 4948,                     //存在横向越权
178     OPERATION_FORBIDDEN_IN_RECYCLE = 4949,                      //禁止在回收站进行此操作
179     FILENAME_LENGTH_BEYOND_LIMIT = 4950,                        //文件名超过上限
180     OPERATION_FORBIDDEN_DELETE_BACKUP_EXIST = 4951,             //禁止删除操作,存在clearTime内的备份记录
181     TEMP_KEY_EXPIRED = 4952,                                    //临时秘钥已过期
182     USER_SHARE_NOT_ALLOWED = 4953,                              //用户被封禁,禁止分享
183     USER_SHARE_PRIVILEGE_LIMITED = 4954,                        //用户没有权益
184     CONTENT_COPYRIGHT_LIMIT = 4955,                             //版权文件禁止下载
185     RISK_MANAGE_FAILED = 4956,                                  //风控失败
186     TASK_RUNNING = 4959,                                        //任务正在执行
187     SERVER_VERSION_UNAVAILABLE = 4960,                          //服务版本号不可用
188     APP_STATUS_ABNORMAL = 4961,                                 //APP状态不正常
189     CATEGORY_STATUS_ABNORMAL = 4962,                            //分类状态不正常
190     CATEGORY_APP_ASSOCIATIONS_EXISTS = 4963,                    //存在应用和分类关系
191     FUNCTION_NOT_SUPPORT = 4964,                                //功能暂不支持
192     MEMBER_KINSHIP_EXISTS = 4965,                               //成员关系已存在
193     MEMBER_NUMBER_LIMIT = 4966,                                 //成员人数已达上限
194     USER_IS_JOINED = 4967,                                      //用户已经加入群组
195     USER_BE_FROZEN = 4968,                                      //用户被冻结
196     INVITER_LINK_EXPIRED = 4969,                                //邀请码或链接已过期
197     RISK_SCANNING = 4970,                                       //分享内容审核中禁止访问
198     ALBUM_APPLICATION_NUMBER_LIMIT = 4971,                      //共享相册申请加入次数超过上限
199     INVITE_CODE_ERROR = 4972,                                   //邀请码错误
200     INVITER_LINK_USED = 4973,                                   //邀请码或链接已使用过
201     APPLICANT_IS_EXIST = 4974,                                  //记录已存在
202     APPLICANT_NOT_FOUND = 4975,                                 //记录不存在
203     APPLICANT_IS_EXPIRED = 4976,                                //记录已失效
204     DATA_CLEARED_FORBIDDEN = 4977,                              //云侧数据清理禁止访问
205     APPEAL_ACCOUNT_FORBIDDEN = 4978,                            //人工封禁不支持申诉
206     APPLICANT_IS_PROCESSED = 4979,                              //申请已经处理过
207     RESOURCE_NOT_MATCH = 4980,                                  //备份记录资源归属不匹配
208     RISKFILE_FORBIDDEN_DOWN = 4981,                             //文件违规下载
209     CONTENT_IS_EXPIRED = 4982,                                  //内容已过期
210     BATCH_IS_EXPIRED = 4983,                                    //批次失效
211     USER_NOT_REALNAME = 4984,                                   //用户未实名认证
212     SERVER_IS_BUSY = 5001,                                      //服务器资源不够
213     OUTER_SERVICE_UNAVAILABLE = 5002,                           //外部服务不可用
214     OUTER_SERVICE_BUSY = 5003,                                  //外部服务忙
215     DATABASE_UNAVAILABLE = 5004,                                //数据库操作失败
216     RESOURCE_LOCKED = 5005,                                     //资源被锁住,暂时禁止操作
217     SERVER_TEMP_ERROR = 5006,                                   //服务器临时错误
218     SERVER_UPDATING = 5007,                                     //服务器升级中
219     RESOURCE_TRASHING = 5008,                                   //资源GC中,暂时禁止操作
220     SERVICE_UNAVAILABLE = 5030,                                 //服务不可用
221     NSP_FLOW_CONTROL = 5031,                                    //NSP_FLOW_CONTROL
222     TEMP_ERROR_RETRY = 5040,                                    //触发端侧重试错误码
223 };
224 
225 struct DKErrorDetail {
226     std::string domain;
227     std::string reason;
228     std::string errorCode;
229     std::string description;
230     std::string errorPos;
231     std::string errorParam;
232     int detailCode;
233 };
234 
235 enum class DKErrorType {
236     TYPE_UNKNOWN = 0,
237     TYPE_NOT_NEED_RETRY,
238     TYPE_MAX,
239 };
240 
241 class DKError {
242 public:
243     bool HasError() const;
244     DKErrorType GetErrorType() const;
245     void SetLocalError(DKLocalErrorCode code);
246     void SetServerError(int code);
247     void ParseErrorFromJson(const Json::Value &jvError);
248 
249     bool isLocalError = false;
250     DKLocalErrorCode dkErrorCode;
251     bool isServerError = false;
252     int serverErrorCode;
253     std::string reason;
254     std::vector<DKErrorDetail> errorDetails;
255     int retryAfter;
256     DKErrorType errorType = DKErrorType::TYPE_UNKNOWN;
257 };
258 } // namespace DriveKit
259 #endif
260