1c8a96e64Sopenharmony_ci/*
2c8a96e64Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
3c8a96e64Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4c8a96e64Sopenharmony_ci * you may not use this file except in compliance with the License.
5c8a96e64Sopenharmony_ci * You may obtain a copy of the License at
6c8a96e64Sopenharmony_ci *
7c8a96e64Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8c8a96e64Sopenharmony_ci *
9c8a96e64Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10c8a96e64Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11c8a96e64Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12c8a96e64Sopenharmony_ci * See the License for the specific language governing permissions and
13c8a96e64Sopenharmony_ci * limitations under the License.
14c8a96e64Sopenharmony_ci */
15c8a96e64Sopenharmony_ci
16c8a96e64Sopenharmony_ci#include "api_policy_adapter.h"
17c8a96e64Sopenharmony_ci
18c8a96e64Sopenharmony_ciApiPolicyAdapter::ApiPolicyAdapter()
19c8a96e64Sopenharmony_ci{
20c8a96e64Sopenharmony_ci#ifndef __WIN32
21c8a96e64Sopenharmony_ci    handle = dlopen("/system/lib64/platformsdk/libapipolicy_client.z.so", RTLD_NOW);
22c8a96e64Sopenharmony_ci    if (!handle) {
23c8a96e64Sopenharmony_ci        return;
24c8a96e64Sopenharmony_ci    }
25c8a96e64Sopenharmony_ci    func = reinterpret_cast<CheckUrlFunc>(dlsym(handle, "CheckUrl"));
26c8a96e64Sopenharmony_ci#endif
27c8a96e64Sopenharmony_ci}
28c8a96e64Sopenharmony_ci
29c8a96e64Sopenharmony_ciApiPolicyAdapter::~ApiPolicyAdapter()
30c8a96e64Sopenharmony_ci{
31c8a96e64Sopenharmony_ci#ifndef __WIN32
32c8a96e64Sopenharmony_ci    if (handle) {
33c8a96e64Sopenharmony_ci        dlclose(handle);
34c8a96e64Sopenharmony_ci        handle = nullptr;
35c8a96e64Sopenharmony_ci    }
36c8a96e64Sopenharmony_ci#endif
37c8a96e64Sopenharmony_ci}
38c8a96e64Sopenharmony_ci
39c8a96e64Sopenharmony_ciint32_t ApiPolicyAdapter::CheckUrl(const std::string& bundleName, const std::string& domainType, const std::string& url)
40c8a96e64Sopenharmony_ci{
41c8a96e64Sopenharmony_ci    int32_t res = 0;
42c8a96e64Sopenharmony_ci    if (func == nullptr) {
43c8a96e64Sopenharmony_ci        return res;
44c8a96e64Sopenharmony_ci    }
45c8a96e64Sopenharmony_ci    res = func(bundleName, domainType, url);
46c8a96e64Sopenharmony_ci    return res;
47c8a96e64Sopenharmony_ci}
48