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 UPDATE_CLIENT_HELPER_H
17 #define UPDATE_CLIENT_HELPER_H
18 
19 #include <string>
20 
21 #include "node_api.h"
22 
23 #include "clear_options.h"
24 #include "description_format.h"
25 #include "description_options.h"
26 #include "download_options.h"
27 #include "event_classify_info.h"
28 #include "event_info.h"
29 #include "napi_common_utils.h"
30 #include "network_type.h"
31 #include "order.h"
32 #include "pause_download_options.h"
33 #include "resume_download_options.h"
34 #include "update_result.h"
35 #include "upgrade_file.h"
36 #include "upgrade_info.h"
37 #include "upgrade_options.h"
38 #include "upgrade_policy.h"
39 
40 namespace OHOS::UpdateEngine {
41 class ClientHelper {
42 public:
43     static int32_t BuildCheckResult(napi_env env, napi_value &obj, const UpdateResult &result);
44     static int32_t BuildCurrentVersionInfo(napi_env env, napi_value &obj, const UpdateResult &result);
45     static ClientStatus BuildEventInfo(napi_env env, napi_value &obj, const EventInfo &eventInfo);
46     static int32_t BuildNewVersionInfo(napi_env env, napi_value &obj, const UpdateResult &result);
47     static int32_t BuildVersionDescriptionInfo(napi_env env, napi_value &obj, const UpdateResult &result);
48     static int32_t BuildUpgradePolicy(napi_env env, napi_value &obj, const UpdateResult &result);
49     static int32_t BuildTaskInfo(napi_env env, napi_value &obj, const UpdateResult &result);
50     static int32_t BuildUndefinedStatus(napi_env env, napi_value &obj, const UpdateResult &result);
51 
52     static ClientStatus GetUpgradeInfoFromArg(napi_env env, const napi_value arg, UpgradeInfo &upgradeInfo);
53     static ClientStatus GetUpgradePolicyFromArg(napi_env env, const napi_value arg, UpgradePolicy &upgradePolicy);
54     static ClientStatus GetUpgradeFileFromArg(napi_env env, const napi_value arg, UpgradeFile &upgradeFile);
55     static ClientStatus GetUpgradeFilesFromArg(napi_env env, const napi_value arg,
56         std::vector<UpgradeFile> &upgradeFiles);
57     static ClientStatus GetVersionDigestInfoFromArg(napi_env env, const napi_value arg,
58         VersionDigestInfo &versionDigestInfo);
59     static ClientStatus GetOptionsFromArg(napi_env env, const napi_value arg, DescriptionOptions &descriptionOptions);
60     static ClientStatus GetOptionsFromArg(napi_env env, const napi_value arg, UpgradeOptions &upgradeOptions);
61     static ClientStatus GetOptionsFromArg(napi_env env, const napi_value arg, ClearOptions &clearOptions);
62     static ClientStatus GetOptionsFromArg(napi_env env, const napi_value arg, DownloadOptions &downloadOptions);
63     static ClientStatus GetOptionsFromArg(napi_env env, const napi_value arg,
64         PauseDownloadOptions &pauseDownloadOptions);
65     static ClientStatus GetOptionsFromArg(napi_env env, const napi_value arg,
66         ResumeDownloadOptions &resumeDownloadOptions);
67     static ClientStatus GetEventClassifyInfoFromArg(napi_env env, const napi_value arg,
68         EventClassifyInfo &eventClassifyInfo);
69 
70     static bool IsValidUpgradeFile(const std::string &upgradeFile);
71 
72     static void TrimString(std::string &str);
73 
74 private:
75     static ClientStatus GetDescriptionFormat(napi_env env, const napi_value arg, DescriptionFormat &format);
76     static ClientStatus GetNetType(napi_env env, const napi_value arg, NetType &netType);
77     static ClientStatus GetOrder(napi_env env, const napi_value arg, Order &order);
78 };
79 } // namespace OHOS::UpdateEngine
80 #endif // UPDATE_CLIENT_HELPER_H