1fc0b0055Sopenharmony_ci/*
2fc0b0055Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3fc0b0055Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4fc0b0055Sopenharmony_ci * you may not use this file except in compliance with the License.
5fc0b0055Sopenharmony_ci * You may obtain a copy of the License at
6fc0b0055Sopenharmony_ci *
7fc0b0055Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8fc0b0055Sopenharmony_ci *
9fc0b0055Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10fc0b0055Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11fc0b0055Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fc0b0055Sopenharmony_ci * See the License for the specific language governing permissions and
13fc0b0055Sopenharmony_ci * limitations under the License.
14fc0b0055Sopenharmony_ci */
15fc0b0055Sopenharmony_ci
16fc0b0055Sopenharmony_ci#include "to_string.h"
17fc0b0055Sopenharmony_ci
18fc0b0055Sopenharmony_ci#include "constant_common.h"
19fc0b0055Sopenharmony_ci
20fc0b0055Sopenharmony_cinamespace OHOS {
21fc0b0055Sopenharmony_cinamespace Security {
22fc0b0055Sopenharmony_cinamespace AccessToken {
23fc0b0055Sopenharmony_civoid ToString::DetailUsedRecordToString(
24fc0b0055Sopenharmony_ci    bool isAccessDetail, const std::vector<UsedRecordDetail>& detailRecord, std::string& infos)
25fc0b0055Sopenharmony_ci{
26fc0b0055Sopenharmony_ci    if (isAccessDetail) {
27fc0b0055Sopenharmony_ci        infos.append(R"(          "accessRecords": [)");
28fc0b0055Sopenharmony_ci    } else {
29fc0b0055Sopenharmony_ci        infos.append(R"(          "rejectRecords": [)");
30fc0b0055Sopenharmony_ci    }
31fc0b0055Sopenharmony_ci    infos.append("\n");
32fc0b0055Sopenharmony_ci    for (const auto& detail : detailRecord) {
33fc0b0055Sopenharmony_ci        infos.append("            {");
34fc0b0055Sopenharmony_ci        infos.append("\n");
35fc0b0055Sopenharmony_ci        infos.append(R"(              "status": ")" + std::to_string(detail.status) + R"(")" + ",\n");
36fc0b0055Sopenharmony_ci        infos.append(R"(              "lockScreenStatus": ")" + std::to_string(
37fc0b0055Sopenharmony_ci            detail.lockScreenStatus) + R"(")" + ",\n");
38fc0b0055Sopenharmony_ci        infos.append(R"(              "timestamp": ")" + std::to_string(detail.timestamp) + R"(")" + ",\n");
39fc0b0055Sopenharmony_ci        infos.append(R"(              "duration": )" + std::to_string(detail.accessDuration) + ",\n");
40fc0b0055Sopenharmony_ci        infos.append(R"(              "count": )" + std::to_string(detail.count) + ",\n");
41fc0b0055Sopenharmony_ci        infos.append(R"(              "usedType": )" + std::to_string(detail.type) + ",\n");
42fc0b0055Sopenharmony_ci        infos.append("            },");
43fc0b0055Sopenharmony_ci        infos.append("\n");
44fc0b0055Sopenharmony_ci    }
45fc0b0055Sopenharmony_ci
46fc0b0055Sopenharmony_ci    infos.append("          ]");
47fc0b0055Sopenharmony_ci    infos.append("\n");
48fc0b0055Sopenharmony_ci}
49fc0b0055Sopenharmony_ci
50fc0b0055Sopenharmony_civoid ToString::PermissionUsedRecordToString(
51fc0b0055Sopenharmony_ci    const std::vector<PermissionUsedRecord>& permissionRecords, std::string& infos)
52fc0b0055Sopenharmony_ci{
53fc0b0055Sopenharmony_ci    for (const auto& perm : permissionRecords) {
54fc0b0055Sopenharmony_ci        infos.append("        {");
55fc0b0055Sopenharmony_ci        infos.append("\n");
56fc0b0055Sopenharmony_ci        infos.append(R"(          "permissionName": ")" + perm.permissionName + R"(")" + ",\n");
57fc0b0055Sopenharmony_ci        infos.append(R"(          "accessCount": ")" + std::to_string(perm.accessCount) + R"(")" + ",\n");
58fc0b0055Sopenharmony_ci        infos.append(R"(          "rejectCount": )" + std::to_string(perm.rejectCount) + ",\n");
59fc0b0055Sopenharmony_ci        infos.append(R"(          "lastAccessTime": )" + std::to_string(perm.lastAccessTime) + ",\n");
60fc0b0055Sopenharmony_ci        infos.append(R"(          "lastRejectTime": )" + std::to_string(perm.lastRejectTime) + ",\n");
61fc0b0055Sopenharmony_ci        infos.append(R"(          "lastAccessDuration": )" + std::to_string(perm.lastAccessDuration) + ",\n");
62fc0b0055Sopenharmony_ci        ToString::DetailUsedRecordToString(true, perm.accessRecords, infos);
63fc0b0055Sopenharmony_ci        ToString::DetailUsedRecordToString(false, perm.rejectRecords, infos);
64fc0b0055Sopenharmony_ci        infos.append("        },");
65fc0b0055Sopenharmony_ci        infos.append("\n");
66fc0b0055Sopenharmony_ci    }
67fc0b0055Sopenharmony_ci}
68fc0b0055Sopenharmony_ci
69fc0b0055Sopenharmony_civoid ToString::BundleUsedRecordToString(const BundleUsedRecord& bundleRecord, std::string& infos)
70fc0b0055Sopenharmony_ci{
71fc0b0055Sopenharmony_ci    infos.append("    {");
72fc0b0055Sopenharmony_ci    infos.append("\n");
73fc0b0055Sopenharmony_ci    infos.append(R"(      "tokenId": )" + std::to_string(bundleRecord.tokenId) + ",\n");
74fc0b0055Sopenharmony_ci    infos.append(R"(      "isRemote": )" + std::to_string(bundleRecord.isRemote) + ",\n");
75fc0b0055Sopenharmony_ci    infos.append(R"(      "bundleName": )" + bundleRecord.bundleName + ",\n");
76fc0b0055Sopenharmony_ci    infos.append(R"(      "permissionRecords": [)");
77fc0b0055Sopenharmony_ci    infos.append("\n");
78fc0b0055Sopenharmony_ci
79fc0b0055Sopenharmony_ci    ToString::PermissionUsedRecordToString(bundleRecord.permissionRecords, infos);
80fc0b0055Sopenharmony_ci
81fc0b0055Sopenharmony_ci    infos.append("      ]");
82fc0b0055Sopenharmony_ci    infos.append("\n");
83fc0b0055Sopenharmony_ci    infos.append("    }");
84fc0b0055Sopenharmony_ci    infos.append("\n");
85fc0b0055Sopenharmony_ci}
86fc0b0055Sopenharmony_ci
87fc0b0055Sopenharmony_civoid ToString::PermissionUsedResultToString(const PermissionUsedResult& result, std::string& infos)
88fc0b0055Sopenharmony_ci{
89fc0b0055Sopenharmony_ci    if (result.bundleRecords.empty()) {
90fc0b0055Sopenharmony_ci        return;
91fc0b0055Sopenharmony_ci    }
92fc0b0055Sopenharmony_ci    infos.append("{");
93fc0b0055Sopenharmony_ci    infos.append("\n");
94fc0b0055Sopenharmony_ci    infos.append(R"(  "beginTime": )" + std::to_string(result.beginTimeMillis) + ",\n");
95fc0b0055Sopenharmony_ci    infos.append(R"(  "endTime": )" + std::to_string(result.endTimeMillis) + ",\n");
96fc0b0055Sopenharmony_ci    infos.append(R"(  "bundleRecords": [)");
97fc0b0055Sopenharmony_ci    infos.append("\n");
98fc0b0055Sopenharmony_ci
99fc0b0055Sopenharmony_ci    for (const auto& res : result.bundleRecords) {
100fc0b0055Sopenharmony_ci        ToString::BundleUsedRecordToString(res, infos);
101fc0b0055Sopenharmony_ci    }
102fc0b0055Sopenharmony_ci
103fc0b0055Sopenharmony_ci    infos.append("  ]");
104fc0b0055Sopenharmony_ci    infos.append("\n");
105fc0b0055Sopenharmony_ci    infos.append("}");
106fc0b0055Sopenharmony_ci    infos.append("\n");
107fc0b0055Sopenharmony_ci}
108fc0b0055Sopenharmony_ci
109fc0b0055Sopenharmony_civoid ToString::PermissionUsedTypeInfoToString(const PermissionUsedTypeInfo& info, std::string& infos)
110fc0b0055Sopenharmony_ci{
111fc0b0055Sopenharmony_ci    infos.append("{\n");
112fc0b0055Sopenharmony_ci    infos.append(R"(  "tokenId": )" + std::to_string(info.tokenId) + ",\n");
113fc0b0055Sopenharmony_ci    infos.append(R"(  "permissionName": )" + info.permissionName + ",\n");
114fc0b0055Sopenharmony_ci    infos.append(R"(  "usedType": )" + std::to_string(info.type) + ",\n");
115fc0b0055Sopenharmony_ci    infos.append("}\n");
116fc0b0055Sopenharmony_ci}
117fc0b0055Sopenharmony_ci} // namespace AccessToken
118fc0b0055Sopenharmony_ci} // namespace Security
119fc0b0055Sopenharmony_ci} // namespace OHOS