1 /* 2 * Copyright (c) 2025 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 OHOS_MEDIA_CLOUD_SYNC_CLOUD_MEDIA_SYNC_CONST_H 17 #define OHOS_MEDIA_CLOUD_SYNC_CLOUD_MEDIA_SYNC_CONST_H 18 19 #include <string> 20 #include <map> 21 22 #include "media_column.h" 23 #include "photo_album_column.h" 24 25 namespace OHOS::Media::CloudSync { 26 const std::string FILE_ATTRIBUTES = "attributes"; 27 const std::string FILE_FIX_VERSION = "fix_version"; 28 const std::string FILE_LOCAL_ID = "local_id"; 29 constexpr int MILLISECOND_TO_SECOND = 1000; 30 constexpr int BATCH_LIMIT_SIZE = 500; 31 const std::string FILE_PROPERTIES = "properties"; 32 const uint32_t NO_ORIENTATION = 0; 33 const std::string THUMB_SUFFIX = "THM"; 34 const std::string FILE_THUMBNAIL = "thumbnail"; 35 const std::string FILE_LCD = "lcdThumbnail"; 36 const std::string FILE_RAW = "raw"; 37 const std::string FILE_EDIT_DATA = "editData"; 38 const std::string FILE_EDIT_DATA_CAMERA = "editDataCamera"; 39 const std::string FILE_CONTENT = "content"; 40 const std::string FILE_NAME = "fileName"; 41 const std::string FILE_SIZE = "size"; 42 const std::string FILE_ROTATION = "rotate"; 43 const std::string FILE_TYPE = "fileType"; 44 const std::string FILE_SOURCE_PATH = "sourcePath"; 45 const std::string LCD_SUFFIX = "LCD"; 46 const std::string THUMB_EX_SUFFIX = "THM_EX/THM"; 47 const std::string LCD_EX_SUFFIX = "THM_EX/LCD"; 48 const std::string TMP_SUFFIX = ".temp.download"; 49 const std::string SCREENSHOT_ALBUM_PATH = "/storage/emulated/0/Pictures/Screenshots/"; 50 const std::string DEFAULT_HIDE_ALBUM_CLOUDID = "default-album-4"; 51 const std::string DEFAULT_SCREENSHOT_LPATH_EN = "/Pictures/Screenshots"; 52 const std::string SCREEN_SHOT_AND_RECORDER_EN = ".Screenshots"; 53 const std::string DEFAULT_SCREENSHOT_CLOUDID = "default-album-2"; 54 const std::string DEFAULT_SCREENRECORDS_LPATH = "/Pictures/Screenrecords"; 55 const std::string PHOTO_CLOUD_PATH_URI = "/storage/cloud/files/"; 56 const std::string PHOTO_MEDIA_PATH_URI = "/storage/media/local/files/"; 57 const std::string ALBUM_PATH = "localPath"; 58 const std::string ALBUM_PROPERTIES = "properties"; 59 const std::string ALBUM_NAME = "albumName"; 60 61 const int32_t ORIENTATION_NORMAL = 1; 62 const int32_t ORIENTATION_ROTATE_90 = 6; 63 const int32_t ORIENTATION_ROTATE_180 = 3; 64 const int32_t ORIENTATION_ROTATE_270 = 8; 65 66 const std::string MEDIA_ALBUM_NAME_EN = "album_name_en"; 67 const std::string MEDIA_DUAL_ALBUM_NAME = "dual_album_name"; 68 const std::string MEDIA_ALBUM_PRIORITY = "priority"; 69 70 const int32_t ROTATE_ANGLE_0 = 0; 71 const int32_t ROTATE_ANGLE_90 = 90; 72 const int32_t ROTATE_ANGLE_180 = 180; 73 const int32_t ROTATE_ANGLE_270 = 270; 74 75 const std::map<int32_t, int32_t> FILE_ROTATIONS = { 76 {ORIENTATION_NORMAL, ROTATE_ANGLE_0}, 77 {ORIENTATION_ROTATE_90, ROTATE_ANGLE_90}, 78 {ORIENTATION_ROTATE_180, ROTATE_ANGLE_180}, 79 {ORIENTATION_ROTATE_270, ROTATE_ANGLE_270}, 80 }; 81 82 /* hash*/ 83 const int32_t HASH_VLAUE = 31; 84 85 /* file type */ 86 enum { 87 FILE_TYPE_IMAGE = 1, 88 FILE_TYPE_VIDEO = 4, 89 FILE_TYPE_LIVEPHOTO = 9, 90 }; 91 92 enum class DataType : int32_t { 93 INT, 94 LONG, 95 DOUBLE, 96 STRING, 97 }; 98 99 enum { 100 DEFAULT_VALUE = -1, 101 TRUE_VALUE = 1, 102 FALSE_VALUE = 0, 103 CACHE_VIDEO_NUM = 100, 104 // ROTATE_ANGLE_0 = 0, 105 TO_MILLISECONDS = 1000, 106 LIMIT_SIZE = 1000, 107 }; 108 enum CloudOperationType { 109 /* upload */ 110 FILE_CREATE, 111 FILE_DELETE, 112 FILE_METADATA_MODIFY, 113 FILE_DATA_MODIFY, 114 FILE_COPY, 115 /* download */ 116 FILE_DOWNLOAD, 117 /*clean*/ 118 FILE_CLEAN 119 }; 120 121 enum CloudAlbumOperationType { 122 /* upload */ 123 PHOTO_ALBUM_CREATE, 124 PHOTO_ALBUM_METADATA_MODIF, 125 PHOTO_ALBUM_DELETE 126 }; 127 128 enum AlbumType : int32_t { 129 NORMAL, 130 SHARE, 131 SOURCE = 2048, 132 }; 133 134 enum LogicType : int32_t { 135 PHYSICAL, 136 LOGICAL, 137 }; 138 139 struct MediaAlbumPluginRowData { 140 std::string lpath; 141 std::string albumName; 142 std::string albumNameEn; 143 std::string bundleName; 144 std::string cloudId; 145 std::string dualAlbumName; 146 int32_t priority; 147 }; 148 149 const std::vector<std::string> QUERY_ALBUM_COLUMNS = { 150 PhotoAlbumColumns::ALBUM_ID, 151 PhotoAlbumColumns::ALBUM_TYPE, 152 PhotoAlbumColumns::ALBUM_NAME, 153 PhotoAlbumColumns::ALBUM_LPATH, 154 PhotoAlbumColumns::ALBUM_CLOUD_ID, 155 PhotoAlbumColumns::ALBUM_SUBTYPE, 156 PhotoAlbumColumns::ALBUM_DATE_ADDED, 157 PhotoAlbumColumns::ALBUM_DATE_MODIFIED, 158 PhotoAlbumColumns::ALBUM_BUNDLE_NAME, 159 PhotoAlbumColumns::ALBUM_LOCAL_LANGUAGE, 160 PhotoAlbumColumns::COVER_URI_SOURCE, 161 PhotoAlbumColumns::COVER_CLOUD_ID, 162 }; 163 164 const std::vector<std::string> MEDIA_CLOUD_SYNC_COLUMNS = { 165 PhotoColumn::MEDIA_FILE_PATH, 166 PhotoColumn::MEDIA_TITLE, 167 PhotoColumn::MEDIA_SIZE, 168 PhotoColumn::MEDIA_NAME, 169 PhotoColumn::MEDIA_TYPE, 170 PhotoColumn::MEDIA_MIME_TYPE, 171 PhotoColumn::MEDIA_DEVICE_NAME, 172 PhotoColumn::MEDIA_DATE_ADDED, 173 PhotoColumn::MEDIA_DATE_MODIFIED, 174 PhotoColumn::MEDIA_DATE_TAKEN, 175 PhotoColumn::MEDIA_DURATION, 176 PhotoColumn::MEDIA_IS_FAV, 177 PhotoColumn::MEDIA_DATE_TRASHED, 178 PhotoColumn::MEDIA_HIDDEN, 179 PhotoColumn::PHOTO_HIDDEN_TIME, 180 PhotoColumn::MEDIA_RELATIVE_PATH, 181 PhotoColumn::MEDIA_VIRTURL_PATH, 182 PhotoColumn::PHOTO_META_DATE_MODIFIED, 183 PhotoColumn::PHOTO_ORIENTATION, 184 PhotoColumn::PHOTO_LATITUDE, 185 PhotoColumn::PHOTO_LONGITUDE, 186 PhotoColumn::PHOTO_HEIGHT, 187 PhotoColumn::PHOTO_WIDTH, 188 PhotoColumn::PHOTO_SUBTYPE, 189 PhotoColumn::PHOTO_BURST_COVER_LEVEL, 190 PhotoColumn::PHOTO_BURST_KEY, 191 PhotoColumn::PHOTO_DATE_YEAR, 192 PhotoColumn::PHOTO_DATE_MONTH, 193 PhotoColumn::PHOTO_DATE_DAY, 194 PhotoColumn::PHOTO_USER_COMMENT, 195 PhotoColumn::PHOTO_THUMB_STATUS, 196 PhotoColumn::PHOTO_SYNC_STATUS, 197 PhotoColumn::PHOTO_SHOOTING_MODE, 198 PhotoColumn::PHOTO_SHOOTING_MODE_TAG, 199 PhotoColumn::PHOTO_DYNAMIC_RANGE_TYPE, 200 PhotoColumn::PHOTO_FRONT_CAMERA, 201 PhotoColumn::PHOTO_DETAIL_TIME, 202 PhotoColumn::PHOTO_EDIT_TIME, 203 PhotoColumn::PHOTO_ORIGINAL_SUBTYPE, 204 PhotoColumn::PHOTO_COVER_POSITION, 205 PhotoColumn::MOVING_PHOTO_EFFECT_MODE, 206 PhotoColumn::PHOTO_OWNER_ALBUM_ID, 207 PhotoColumn::PHOTO_ORIGINAL_ASSET_CLOUD_ID, 208 PhotoColumn::PHOTO_SOURCE_PATH, 209 PhotoColumn::SUPPORTED_WATERMARK_TYPE, 210 PhotoColumn::PHOTO_STRONG_ASSOCIATION, 211 /* keep cloud_id at the last, so RecordToValueBucket can skip it*/ 212 MediaColumn::MEDIA_ID, 213 PhotoColumn::PHOTO_CLOUD_ID, 214 }; 215 216 const std::vector<std::string> ALBUM_LOCAL_QUERY_COLUMNS = { 217 Media::PhotoAlbumColumns::ALBUM_ID, 218 Media::PhotoAlbumColumns::ALBUM_NAME, 219 Media::PhotoAlbumColumns::ALBUM_TYPE, 220 Media::PhotoAlbumColumns::ALBUM_DIRTY, 221 Media::PhotoAlbumColumns::ALBUM_LPATH, 222 Media::PhotoAlbumColumns::ALBUM_CLOUD_ID, 223 }; 224 225 const std::vector<std::string> ON_UPLOAD_COLUMNS = { 226 Media::PhotoColumn::MEDIA_FILE_PATH, 227 Media::PhotoColumn::MEDIA_DATE_MODIFIED, 228 Media::PhotoColumn::PHOTO_META_DATE_MODIFIED, 229 Media::MediaColumn::MEDIA_ID, 230 Media::PhotoColumn::PHOTO_CLOUD_ID, 231 Media::PhotoColumn::PHOTO_DIRTY, 232 }; 233 234 enum CheckFlag : int32_t { 235 CHECKED, 236 NEED_CHECK, 237 }; 238 239 enum ErrorType { 240 TYPE_UNKNOWN = 0, 241 TYPE_NOT_NEED_RETRY, // 不需要重试的错误类型 242 TYPE_NEED_UPLOAD, // 需要重新上传 243 TYPE_MAX, 244 }; 245 246 enum ServerErrorCode { 247 ACCESS_DENIED = 403, // 没有权限访问记录、数据库等 248 ATOMIC_ERROR = 400, // 原子批处理操作失败 249 AUTHENTICATION_FAILED = 401, // 身份验证失败 250 AUTHENTICATION_REQUIRED = 421, // 没有验证身份,但请求需要身份验证 251 BAD_REQUEST = 400, // 无效的请求 252 CONFLICT = 409, // recordChangeTag值过期 253 EXISTS = 409, // 创建的资源已存在 254 INTERNAL_ERROR = 500, // 内部错误 255 NOT_FOUND = 404, // 资源未找到 256 QUOTA_EXCEEDED = 413, // 如果访问公共数据库,您超出了应用程序的配额。访问私有数据库时,超出用户的iCloud配额 257 THROTTLED = 429, // 请求被停止了,稍后重试 258 TRY_AGAIN_LATER = 503, // 内部错误,稍后重试 259 VALIDATING_REFERENCE_ERROR = 412, // 请求违反了验证引用约束 260 ZONE_NOT_FOUND = 404, // 没有找到请求中指定的区域 261 UID_EMPTY = 1003, // 云空间未登录,userid为空 262 RESPONSE_EMPTY = 1004, // 服务端返回为空 263 RESPONSE_NOT_OK = 1005, // 服务端返回结果错误 264 NO_NETWORK = 1006, // 云空间没有网络 265 GRS_NULL = 1007, // grs为空 266 NETWORK_ERROR = 1008, // 云空间网络异常 267 ERROR_PARAM = 1009, // 参数错误 268 GET_AT_FAIL = 1010, // 获取AT失效 269 ASSET_NOT_EXIST = 1011, // Asset不存在 270 DELETE_ASSET_FAIL = 1012, // 删除Asset失败 271 SWITCH_OFF = 1013, // 同步开关关闭 272 RESOURCE_INVALID = 1014, // 资源重复,需要调用接口重新生成recordid 273 ERROR_ANTI_DELETE = 1015, // 防反删 274 NOT_SUPPORT_APP = 1016, // 应用不支持同步 275 FILE_NOT_EXIST = 1017, // 上传文件不存在 276 READ_FILE_ERROR = 1018, // 读取文件失败 277 RESPONSE_TIME_OUT = 1019, // 响应超时 278 REQUEST_INHIBITED = 1020, // 不允许 279 INVALID_LOCK_PARAM = 1021, // 锁参数不对 280 RENEW_RESOURCE = 1024, // 需要重置id,并重新上传 281 ALBUM_NOT_EXIST = 1025, // 相册不存在 282 283 // networkkit 返回的错误 284 NET_KIT_HTTP_ERROR = 10001, // networkkit http错误,例如 服务端主动关闭拒绝 285 NET_KIT_INTERNAL_ERROR = 10002, // networkkit 内部错误 286 NET_KIT_INTERRUPTED_ERROR = 10003, // networkkit 中断错误,业务取消了上传下载 287 NET_KIT_NETWORK_ERROR = 10004, // networkkit 网络错误 288 NET_KIT_NETWORK_IO_ERROR = 10005, // networkkit IO错误 289 NET_KIT_PARAMS_CHECK_ERROR = 10006, // networkkit 参数错误 290 NET_KIT_UNKOWN_ERROR = 10007, // networkkit 未知错误 291 }; 292 293 enum ErrorDetailCode { 294 LACK_OF_PARAM = 4001, // 缺少入参 295 PARAM_INVALID = 4002, // 参数校验失败 296 PARAM_VALUE_NOT_SUPPORT = 4003, // 参数不支持 297 PARAM_EXPIRED = 4004, // 入参已失效 298 SITE_NOT_FOUND = 4005, // 站点信息未知 299 NON_SUPPORT_CHARACTER_INCLUDED = 4006, // 包含有不支持的字符 300 ILLEGAL_CHARACTER_INCLUDED = 4007, // 包含有非法的字符 301 PARAMETER_LENGTH_BEYOND_LIMIT = 4008, // 参数长度超过限制 302 PARENTFOLDER_NOT_FOUND = 4009, // 父目录不存在 303 TOKEN_CFG_INVALID = 4010, // token配置项无效 304 USER_NOT_AUTHORIZED = 4011, // 用户没有授权 305 APP_NOT_AUTHORIZED = 4012, // App没有授权 306 TICKET_INVALID = 4013, // ticket无效 307 GRANT_CANCEL = 4014, // 取消授权 308 LOGIN_FAILED = 4015, // 登陆失败 309 SESSION_TIMEOUT = 4016, // 会话过期 310 FORCE_RELOGIN = 4017, // 强制重新登陆账号 311 FLOW_ID_NOT_MATCH = 4020, // 越权 312 DATA_MIGRATING = 4031, // 数据割接未完成 313 SERVICE_NOT_SUPPORT = 4032, // 服务未开放 314 AGREEMENT_NOT_SIGNED = 4033, // 协议未签署 315 CROSS_SITE_NOT_SUPPORT = 4034, // 跨站点功能限制 316 INSUFFICIENT_SCOPE = 4035, // Scope校验失败 317 INSUFFICIENT_PERMISSION = 4036, // 无此操作权限 318 OPERATION_NOT_COMPLETE = 4037, // 由于错误无法完成操作 319 OUTER_SERVICE_ERROR = 4038, // 外部服务错误且无法恢复 320 SPACE_FULL = 4039, // 用户空间不足 321 CONTENT_NOT_FIND = 4041, // 内容未发现 322 CONTENT_UNAVAILABLE = 4042, // 内容解析失败 323 CHANNEL_NOT_FOUND = 4043, // 订阅未发现 324 THUMBNAIL_NOT_FOUND = 4044, // 缩略图不存在 325 SHARE_LINK_NOT_FOUND = 4045, // 分享链接不存在 326 TEMP_DATA_INVALID = 4046, // 临时数据无效 327 FILE_NOT_FOUND = 4047, // 实体数据不存在 328 APP_NOT_EXISTS = 4048, // APP不存在 329 CATEGORY_NOT_EXISTS = 4049, // 分类不存在 330 SHARE_CONTENT_NOT_EXISTS = 4050, // 分享内容不存在 331 THUMBNAIL_GENERATE_FAILED = 4051, // 缩略图生成失败 332 VERSION_CONFLICT = 4090, // 版本冲突 333 LOCK_FAILED = 4091, // 获取锁失败 334 SILENCE_USER_FAILED = 4092, // 沉默用户拒绝失败 335 FILE_USING_FORBIDDEN_OP = 4093, // 文件正在使用禁止操作 336 LOCK_BY_DEL_DEVICE = 4094, // 设备因按设备删除已锁定 337 EXPIRE_APP_CLEANUP = 4095, // 超期模块清理中 338 CURSOR_EXPIRED = 4100, // 游标过期 339 TEMP_DATA_CLEARD = 4101, // 临时数据已经被清理 340 CLOUD_DATA_UPDATED = 4121, // 云端数据已被更新 341 FORCE_UPDATE_CLIENT = 4161, // 新商业模式下,老端不支持,强制更新 342 USER_REQUEST_TOO_MANY = 4291, // 用户请求太频繁 343 APP_REQUEST_TOO_MANY = 4292, // 应用请求太频繁 344 FLOW_CONTROL = 4293, // 用户请求流控 345 USER_REQUEST_ERROR_TOO_MANY = 4294, // 用户请求错误次数超过限制 346 USERDATA_EXCEEDS_UPPER_THRESHOLD = 4296, // 用户上传数据超过阈值 347 PARTIAL_FILE_NOT_SUPPORT_SHARE = 4905, // 部分文件不支持分享 348 PARENTFOLDER_TRASHED = 4906, // 父目录被删除到回收站 349 ACCOUNT_NAME_WRONG = 4907, // 用户账号错误 350 CIPHER_INVALID = 4908, // 用户秘钥已经失效 351 DUPLICATED_ID = 4909, // id已存在 352 VUDID_IMEI_INVALID = 4910, // VUDID转换IMEI失败 353 FILE_NOT_SUPPORT_SHARE = 4911, // 所有文件不支持分享 354 EXTERNAL_LINK_NOT_AUTHORIZED = 4912, // 外部链接没有授权 355 ORIGINAL_NOT_EXSIT = 4913, // 源文件不存在 356 NO_CHECK_RESULT = 4914, // 无检查结果 357 CHECK_FAILED = 4915, // 检查失败 358 BUCKET_NOT_EXISTS = 4916, // 桶不存在 359 RECORD_DATA_LOST = 4917, // Record记录丢失 360 MODIFY_NORMAL_DATA = 4918, // 数据零丢失补全修复时,校验失败,正在修复的记录为正常的记录 361 DIVIDE_NOT_SUPPORT = 4919, // 不支持差分 362 BUCKET_NOT_IN_SAME_REGION = 4920, // 桶不同源 363 FILE_REFERENCED = 4921, // File被引用,不能删除 364 SLICE_OBJECT_LOST = 4923, // 分片丢失 365 ABNORMAL_DOWNLOAD = 4931, // 用户异常下载 366 SAME_FILENAME_NOT_ALLOWED = 4932, // 禁止重复文件名 367 CANNOT_USE_SERVICE = 4933, // 无法为此用户提供服务 368 FILES_NUM_BEYOND_LIMIT = 4934, // 下载文件数超过限制 369 FILES_SIZE_BEYOND_LIMIT = 4935, // 下载文件大小超过限制 370 TIER_BEYOND_LIMIT = 4936, // 层级超过限制 371 HISTORYVERSIONS_BEYOND_LIMIT = 4937, // 历史版本数超过限制 372 COPY_FORBIDDEN = 4938, // 此文件禁止拷贝 373 USER_SUSPEND_SERVICE = 4939, // 用户停用服务 374 FILE_VERSION_CONFLICT = 4940, // 文件版本冲突 375 REAL_NAME_AUTHENTICATION_FAILED = 4941, // 实名认证失败 376 SHARE_LINK_EXPIRED = 4942, // 分享链接已经过期 377 RECEIVER_BEYOND_LIMIT = 4943, // 分享人数达到上限 378 CONTENT_SHARE_NOT_ALLOWED = 4944, // 内容禁止分享 379 DATA_NUMBER_BEYOND_LIMIT = 4945, // 云端数据超过限制 380 FORBIDDEN_USER = 4946, // 禁止用户操作 381 PARAM_CAN_NOT_UPDATE = 4947, // 参数禁止更新 382 HORIZONTAL_PRIVILEGE_ESCALATION = 4948, // 存在横向越权 383 OPERATION_FORBIDDEN_IN_RECYCLE = 4949, // 禁止在回收站进行此操作 384 FILENAME_LENGTH_BEYOND_LIMIT = 4950, // 文件名超过上限 385 OPERATION_FORBIDDEN_DELETE_BACKUP_EXIST = 4951, // 禁止删除操作,存在clearTime内的备份记录 386 TEMP_KEY_EXPIRED = 4952, // 临时秘钥已过期 387 USER_SHARE_NOT_ALLOWED = 4953, // 用户被封禁,禁止分享 388 USER_SHARE_PRIVILEGE_LIMITED = 4954, // 用户没有权益 389 CONTENT_COPYRIGHT_LIMIT = 4955, // 版权文件禁止下载 390 RISK_MANAGE_FAILED = 4956, // 风控失败 391 SHAREING_TIMES_EXCEEDS_LIMITS = 4957, // 分享次数超出了限制 392 TASK_RUNNING = 4959, // 任务正在执行 393 SERVER_VERSION_UNAVAILABLE = 4960, // 服务版本号不可用 394 APP_STATUS_ABNORMAL = 4961, // APP状态不正常 395 CATEGORY_STATUS_ABNORMAL = 4962, // 分类状态不正常 396 CATEGORY_APP_ASSOCIATIONS_EXISTS = 4963, // 存在应用和分类关系 397 FUNCTION_NOT_SUPPORT = 4964, // 功能暂不支持 398 MEMBER_KINSHIP_EXISTS = 4965, // 成员关系已存在 399 MEMBER_NUMBER_LIMIT = 4966, // 成员人数已达上限 400 USER_IS_JOINED = 4967, // 用户已经加入群组 401 USER_BE_FROZEN = 4968, // 用户被冻结 402 INVITER_LINK_EXPIRED = 4969, // 邀请码或链接已过期 403 RISK_SCANNING = 4970, // 分享内容审核中禁止访问 404 ALBUM_APPLICATION_NUMBER_LIMIT = 4971, // 共享相册申请加入次数超过上限 405 INVITE_CODE_ERROR = 4972, // 邀请码错误 406 INVITER_LINK_USED = 4973, // 邀请码或链接已使用过 407 APPLICANT_IS_EXIST = 4974, // 记录已存在 408 APPLICANT_NOT_FOUND = 4975, // 记录不存在 409 APPLICANT_IS_EXPIRED = 4976, // 记录已失效 410 DATA_CLEARED_FORBIDDEN = 4977, // 云侧数据清理禁止访问 411 APPEAL_ACCOUNT_FORBIDDEN = 4978, // 人工封禁不支持申诉 412 APPLICANT_IS_PROCESSED = 4979, // 申请已经处理过 413 RESOURCE_NOT_MATCH = 4980, // 备份记录资源归属不匹配 414 RISKFILE_FORBIDDEN_DOWN = 4981, // 文件违规禁止下载 415 CONTENT_IS_EXPIRED = 4982, // 内容已过期 416 BATCH_IS_EXPIRED = 4983, // 批次失效 417 USER_NOT_REALNAME = 4984, // 用户未实名认证 418 CONTENT_ALL_RISK = 4985, // 内容全部违规 419 BUSINESS_MODEL_CHANGE_DATA_UPLOAD_FORBIDDEN = 4988, // 新商业模式下,基础用户不允许调用 420 CLOUD_DATA_CLEARING = 4989, // 用户数据清理中,禁止数据操作 421 USER_DATA_MAX_LIMIT = 4990, // 用户数据达到规格上限 422 PARNENT_NOT_EXIST = 4991, // 文件父目录不存在 423 SERVER_IS_BUSY = 5001, // 服务器资源不够 424 OUTER_SERVICE_UNAVAILABLE = 5002, // 外部服务不可用 425 OUTER_SERVICE_BUSY = 5003, // 外部服务忙 426 DATABASE_UNAVAILABLE = 5004, // 数据库操作失败 427 RESOURCE_LOCKED = 5005, // 资源被锁住,暂时禁止操作 428 SERVER_TEMP_ERROR = 5006, // 服务器临时错误 429 SERVER_UPDATING = 5007, // 服务器升级中 430 RESOURCE_TRASHING = 5008, // 资源GC中,暂时禁止操作 431 SERVICE_UNAVAILABLE = 5030, // 服务不可用 432 NSP_FLOW_CONTROL = 5031, // NSP_FLOW_CONTROL 433 TEMP_ERROR_RETRY = 5040, // 触发端侧重试错误码 434 }; 435 436 enum CloudSyncServiceErrCode { 437 E_OK = 0, 438 E_SEVICE_DIED, 439 E_INVAL_ARG, 440 E_BROKEN_IPC, 441 E_SA_LOAD_FAILED, 442 E_SERVICE_DESCRIPTOR_IS_EMPTY, 443 E_PERMISSION_DENIED, 444 E_PERMISSION_SYSTEM, 445 E_GET_PHYSICAL_PATH_FAILED, 446 E_GET_TOKEN_INFO_ERROR, 447 E_SYNCER_NUM_OUT_OF_RANGE, 448 E_SYNC_FAILED_BATTERY_LOW, 449 E_SYNC_FAILED_BATTERY_TOO_LOW, 450 E_SYNC_FAILED_NETWORK_NOT_AVAILABLE, 451 E_GET_NETWORK_MANAGER_FAILED, 452 E_DELETE_FAILED, 453 E_NO_SUCH_FILE, 454 E_RENAME_FAIL, 455 E_SYSTEM_LOAD_OVER, 456 E_EXCEED_MAX_SIZE, 457 E_ILLEGAL_URI, 458 459 /* data syncer */ 460 E_CLOUD_SDK, 461 E_RDB, 462 E_CONTEXT, 463 E_STOP, 464 E_PENDING, 465 E_SCHEDULE, 466 E_ASYNC_RUN, 467 E_PATH, 468 E_DATA, 469 E_NOTIFY, 470 E_UNKNOWN, 471 E_CLOUD_STORAGE_FULL, 472 E_LOCAL_STORAGE_FULL, 473 E_BUSINESS_MODE_CHANGED, 474 E_OSACCOUNT, 475 E_USER_LOCKED, 476 E_GET_SIZE_ERROR, 477 478 E_IPC_READ_FAILED, 479 E_IPC_WRITE_FAILED, 480 E_SOFTBUS_SESSION_FAILED, 481 E_GET_DEVICE_ID, 482 E_GET_USER_ID, 483 E_NULLPTR, 484 /* session */ 485 E_CREATE_SESSION, 486 E_OPEN_SESSION, 487 E_WAIT_SESSION_OPENED, 488 E_FILE_NOT_EXIST, 489 E_SEND_FILE, 490 E_MEMORY, 491 492 /* eventhandler */ 493 E_EVENT_HANDLER, 494 E_ZIP, 495 496 /* download timeout */ 497 E_TIMEOUT, 498 499 E_SOURCE_BASIC = 10000, 500 501 E_THM_SOURCE_BASIC = E_SOURCE_BASIC + 1000, 502 E_THM_SIZE_IS_ZERO = E_THM_SOURCE_BASIC + 201, 503 E_THM_IS_TOO_LARGE = E_THM_SIZE_IS_ZERO + 1, 504 505 E_LCD_SOURCE_BASIC = E_SOURCE_BASIC + 2000, 506 E_LCD_SIZE_IS_ZERO = E_LCD_SOURCE_BASIC + 201, 507 E_LCD_IS_TOO_LARGE = E_LCD_SIZE_IS_ZERO + 1, 508 509 E_CONTENT_SOURCE_BASIC = E_SOURCE_BASIC + 3000, 510 E_CONTENT_SIZE_IS_ZERO = E_CONTENT_SOURCE_BASIC + 201, 511 E_CONTENT_COVERT_LIVE_PHOTO = E_CONTENT_SIZE_IS_ZERO + 1, 512 E_CONTENT_RAW_SIZE_IS_ZERO = E_CONTENT_COVERT_LIVE_PHOTO + 1, 513 514 E_FIELD_BASIC = 20000, 515 516 E_DB_FIELD_BASIC = E_FIELD_BASIC + 1000, 517 E_DB_SIZE_IS_ZERO = E_DB_FIELD_BASIC + 1, 518 E_DB_ALBUM_NOT_FOUND = E_DB_SIZE_IS_ZERO + 1, 519 E_DB_ALBUM_ID_IS_EMPTY = E_DB_ALBUM_NOT_FOUND + 1, 520 521 E_DK_FIELD_BASIC = E_FIELD_BASIC + 2000, 522 E_NO_ATTRIBUTES = E_DK_FIELD_BASIC + 1, 523 }; 524 525 enum AlbumSource { 526 ALBUM_FROM_LOCAL = 1, 527 ALBUM_FROM_CLOUD = 2, 528 }; 529 530 enum Clean { 531 NOT_NEED_CLEAN = 0, 532 NEED_CLEAN, 533 }; 534 535 enum ThmLcdState { 536 THM = 0b001, 537 LCD = 0b010, 538 THMLCD = 0b011, 539 }; 540 541 enum PhotoPosition { 542 POSITION_LOCAL = 1, 543 POSITION_CLOUD, 544 POSITION_BOTH, 545 }; 546 547 enum StatsIndex { 548 NEW_RECORDS_COUNT = 0, 549 MERGE_RECORDS_COUNT = 1, 550 META_MODIFY_RECORDS_COUNT = 2, 551 FILE_MODIFY_RECORDS_COUNT = 3, 552 DELETE_RECORDS_COUNT = 4, 553 }; 554 555 enum class MediaTableType : uint32_t { 556 TYPE_ASSET, 557 TYPE_ALBUM, 558 }; 559 560 static constexpr int STORAGE_MANAGER_MANAGER_ID = 5003; 561 static const std::string CLOUD_BASE_URI = "datashareproxy://com.huawei.hmos.clouddrive/"; 562 static const std::string CLOUD_DATASHARE_URI = CLOUD_BASE_URI + "cloud_sp?Proxy=true"; 563 static const std::string CLOUD_URI = CLOUD_DATASHARE_URI + "&key=useMobileNetworkData"; 564 static const std::string CLOUD_AGING_URI = CLOUD_DATASHARE_URI + "&key=dataAgingPolicy"; 565 static const std::string CLOUD_SYNC_URI = CLOUD_BASE_URI + "sync_module_data?Proxy=true"; 566 static const std::string CLOUD_SYNC_SWITCH_URI = CLOUD_BASE_URI + "sync_switch&bundleName=com.huawei.hmos.photos"; 567 static const std::string MOBILE_NETWORK_STATUS_ON = "1"; 568 static const std::string SCREENRECORD_ALBUM_PATH = "/storage/emulated/0/Pictures/Screenrecords/"; 569 static const std::string SOURCE_PATH_PERFIX = "/storage/emulated/0"; 570 } // namespace OHOS::Media::CloudSync 571 #endif // OHOS_MEDIA_CLOUD_SYNC_CLOUD_MEDIA_SYNC_CONST_H