1 /*
2 * Copyright (c) 2022 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 #include "napi_edm_error.h"
17
18 #include <unordered_map>
19
20 namespace OHOS {
21 namespace EDM {
22 static const std::unordered_map<int32_t, std::string> errMessageMap = {
23 {
24 EdmReturnErrCode::PERMISSION_DENIED, "the application does not have permission to call this function."
25 },
26 {
27 EdmReturnErrCode::SYSTEM_ABNORMALLY, "the system ability work abnormally."
28 },
29 {
30 EdmReturnErrCode::ENABLE_ADMIN_FAILED, "failed to enable the administrator application of the device."
31 },
32 {
33 EdmReturnErrCode::COMPONENT_INVALID, "the administrator ability component is invalid."
34 },
35 {
36 EdmReturnErrCode::ADMIN_INACTIVE, "the application is not a administrator of the device."
37 },
38 {
39 EdmReturnErrCode::DISABLE_ADMIN_FAILED, "failed to disable the administrator application of the device."
40 },
41 {
42 EdmReturnErrCode::UID_INVALID, "the specified user ID is invalid."
43 },
44 {
45 EdmReturnErrCode::INTERFACE_UNSUPPORTED, "the specified interface is not supported."
46 },
47 {
48 EdmReturnErrCode::PARAM_ERROR, "invalid input parameter."
49 },
50 {
51 EdmReturnErrCode::ADMIN_EDM_PERMISSION_DENIED,
52 "the administrator application does not have permission to manage the device."
53 },
54 {
55 EdmReturnErrCode::MANAGED_EVENTS_INVALID, "the specified managed event is is invalid."
56 }
57 };
58
CreateError(napi_env env,ErrCode errorCode)59 napi_value CreateError(napi_env env, ErrCode errorCode)
60 {
61 return CreateError(env, GetMessageFromReturncode(errorCode).first,
62 GetMessageFromReturncode(errorCode).second);
63 }
64
CreateError(napi_env env,int32_t errorCode,const std::string & errMessage)65 napi_value CreateError(napi_env env, int32_t errorCode, const std::string &errMessage)
66 {
67 napi_value result = nullptr;
68 napi_value message = nullptr;
69 napi_value errorCodeStr = nullptr;
70 napi_create_string_utf8(env, static_cast<char *>(std::to_string(errorCode).data()),
71 std::to_string(errorCode).size(), &errorCodeStr);
72 napi_create_string_utf8(env, errMessage.c_str(), errMessage.size(), &message);
73 napi_create_error(env, errorCodeStr, message, &result);
74 return result;
75 }
76
GetMessageFromReturncode(ErrCode returnCode)77 std::pair<int32_t, std::string> GetMessageFromReturncode(ErrCode returnCode)
78 {
79 auto iter = errMessageMap.find(returnCode);
80 if (iter != errMessageMap.end()) {
81 return std::make_pair(returnCode, iter->second);
82 } else {
83 return std::make_pair(EdmReturnErrCode::PARAM_ERROR, "some thing wrong happend");
84 }
85 }
86 } // namespace EDM
87 } // namespace OHOS