• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2024 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 #include "upgrade_restore_gallery_media_task.h"
16 
17 #include <sstream>
18 #include <nlohmann/json.hpp>
19 
20 #include "media_log.h"
21 #include "hisysevent.h"
22 #include "media_backup_report_data_type.h"
23 #include "json_utils.h"
24 
25 namespace OHOS::Media {
LoadTask(const std::string & taskInfo)26 std::vector<MediaRestoreResultInfo> UpgradeRestoreGalleryMediaTask::LoadTask(const std::string &taskInfo)
27 {
28     CallbackResultData resultData = this->ParseFromJsonStr(taskInfo);
29     MEDIA_INFO_LOG("GET restoreExInfo: %{public}s", resultData.ToString().c_str());
30     return this->Parse(resultData);
31 }
32 
Load(const std::string & type,const std::string & errorCode,const std::string & errorInfo)33 MediaRestoreResultInfo UpgradeRestoreGalleryMediaTask::Load(const std::string &type, const std::string &errorCode,
34     const std::string &errorInfo)
35 {
36     MediaRestoreResultInfo info;
37     info.sceneCode = this->sceneCode_;
38     info.taskId = this->taskId_;
39     info.errorCode = errorCode;
40     info.errorInfo = errorInfo;
41     info.type = type;
42     return info;
43 }
44 
Load(const RestoreTaskInfo & taskInfo)45 MediaRestoreResultInfo UpgradeRestoreGalleryMediaTask::Load(const RestoreTaskInfo &taskInfo)
46 {
47     MediaRestoreResultInfo info;
48     info.sceneCode = this->sceneCode_;
49     info.taskId = this->taskId_;
50     info.errorCode = taskInfo.errorCode;
51     info.errorInfo = taskInfo.errorInfo;
52     info.successCount = taskInfo.successCount;
53     info.failedCount = taskInfo.failedCount;
54     info.duplicateCount = taskInfo.duplicateCount;
55     info.type = taskInfo.type;
56     return info;
57 }
58 
ParseFromJsonStr(const std::string & jsonStr)59 CallbackResultData UpgradeRestoreGalleryMediaTask::ParseFromJsonStr(const std::string &jsonStr)
60 {
61     JsonUtils jsonUtils;
62     nlohmann::json jsonObj = jsonUtils.Parse(jsonStr);
63     CallbackResultData resultData;
64     for (const auto &info : jsonUtils.GetArray(jsonObj, "resultInfo")) {
65         // Parse the resultInfo
66         bool isResultInfo = jsonUtils.IsExists(info, "errorCode");
67         isResultInfo = isResultInfo && jsonUtils.IsExists(info, "errorInfo");
68         isResultInfo = isResultInfo && jsonUtils.IsExists(info, "type");
69         if (isResultInfo) {
70             CallbackResultInfo resultInfo;
71             resultInfo.errorCode = jsonUtils.GetString(info, "errorCode");
72             resultInfo.errorInfo = jsonUtils.GetString(info, "errorInfo");
73             resultInfo.type = jsonUtils.GetString(info, "type");
74             resultData.resultInfo = resultInfo;
75             continue;
76         }
77         // Parse the backupInfo
78         bool isBackupInfo = jsonUtils.IsExists(info, "infos");
79         CHECK_AND_CONTINUE(isBackupInfo);
80         for (const auto &backup : jsonUtils.GetArray(info, "infos")) {
81             CallbackBackupInfo backupInfo;
82             backupInfo.backupInfo = jsonUtils.GetString(backup, "backupInfo");
83             backupInfo.duplicateCount = jsonUtils.GetInt(backup, "duplicateCount");
84             backupInfo.failedCount = jsonUtils.GetInt(backup, "failedCount");
85             backupInfo.successCount = jsonUtils.GetInt(backup, "successCount");
86             resultData.infos.emplace_back(backupInfo);
87         }
88     }
89     return resultData;
90 }
91 
Parse(const CallbackResultData & resultData)92 std::vector<MediaRestoreResultInfo> UpgradeRestoreGalleryMediaTask::Parse(const CallbackResultData &resultData)
93 {
94     std::vector<MediaRestoreResultInfo> result;
95     const CallbackResultInfo &resultInfo = resultData.resultInfo;
96     for (const auto &backupInfo : resultData.infos) {
97         MediaRestoreResultInfo eventInfo;
98         eventInfo.sceneCode = this->sceneCode_;
99         eventInfo.taskId = this->taskId_;
100         eventInfo.errorCode = resultInfo.errorCode;
101         eventInfo.errorInfo = resultInfo.errorInfo;
102         eventInfo.type = resultInfo.type;
103         eventInfo.backupInfo = backupInfo.backupInfo;
104         eventInfo.duplicateCount = backupInfo.duplicateCount;
105         eventInfo.failedCount = backupInfo.failedCount;
106         eventInfo.successCount = backupInfo.successCount;
107         result.emplace_back(eventInfo);
108     }
109     return result;
110 }
111 }  // namespace OHOS::Media