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 "to_string.h" 17 18#include "constant_common.h" 19 20namespace OHOS { 21namespace Security { 22namespace AccessToken { 23void ToString::DetailUsedRecordToString( 24 bool isAccessDetail, const std::vector<UsedRecordDetail>& detailRecord, std::string& infos) 25{ 26 if (isAccessDetail) { 27 infos.append(R"( "accessRecords": [)"); 28 } else { 29 infos.append(R"( "rejectRecords": [)"); 30 } 31 infos.append("\n"); 32 for (const auto& detail : detailRecord) { 33 infos.append(" {"); 34 infos.append("\n"); 35 infos.append(R"( "status": ")" + std::to_string(detail.status) + R"(")" + ",\n"); 36 infos.append(R"( "lockScreenStatus": ")" + std::to_string( 37 detail.lockScreenStatus) + R"(")" + ",\n"); 38 infos.append(R"( "timestamp": ")" + std::to_string(detail.timestamp) + R"(")" + ",\n"); 39 infos.append(R"( "duration": )" + std::to_string(detail.accessDuration) + ",\n"); 40 infos.append(R"( "count": )" + std::to_string(detail.count) + ",\n"); 41 infos.append(R"( "usedType": )" + std::to_string(detail.type) + ",\n"); 42 infos.append(" },"); 43 infos.append("\n"); 44 } 45 46 infos.append(" ]"); 47 infos.append("\n"); 48} 49 50void ToString::PermissionUsedRecordToString( 51 const std::vector<PermissionUsedRecord>& permissionRecords, std::string& infos) 52{ 53 for (const auto& perm : permissionRecords) { 54 infos.append(" {"); 55 infos.append("\n"); 56 infos.append(R"( "permissionName": ")" + perm.permissionName + R"(")" + ",\n"); 57 infos.append(R"( "accessCount": ")" + std::to_string(perm.accessCount) + R"(")" + ",\n"); 58 infos.append(R"( "rejectCount": )" + std::to_string(perm.rejectCount) + ",\n"); 59 infos.append(R"( "lastAccessTime": )" + std::to_string(perm.lastAccessTime) + ",\n"); 60 infos.append(R"( "lastRejectTime": )" + std::to_string(perm.lastRejectTime) + ",\n"); 61 infos.append(R"( "lastAccessDuration": )" + std::to_string(perm.lastAccessDuration) + ",\n"); 62 ToString::DetailUsedRecordToString(true, perm.accessRecords, infos); 63 ToString::DetailUsedRecordToString(false, perm.rejectRecords, infos); 64 infos.append(" },"); 65 infos.append("\n"); 66 } 67} 68 69void ToString::BundleUsedRecordToString(const BundleUsedRecord& bundleRecord, std::string& infos) 70{ 71 infos.append(" {"); 72 infos.append("\n"); 73 infos.append(R"( "tokenId": )" + std::to_string(bundleRecord.tokenId) + ",\n"); 74 infos.append(R"( "isRemote": )" + std::to_string(bundleRecord.isRemote) + ",\n"); 75 infos.append(R"( "bundleName": )" + bundleRecord.bundleName + ",\n"); 76 infos.append(R"( "permissionRecords": [)"); 77 infos.append("\n"); 78 79 ToString::PermissionUsedRecordToString(bundleRecord.permissionRecords, infos); 80 81 infos.append(" ]"); 82 infos.append("\n"); 83 infos.append(" }"); 84 infos.append("\n"); 85} 86 87void ToString::PermissionUsedResultToString(const PermissionUsedResult& result, std::string& infos) 88{ 89 if (result.bundleRecords.empty()) { 90 return; 91 } 92 infos.append("{"); 93 infos.append("\n"); 94 infos.append(R"( "beginTime": )" + std::to_string(result.beginTimeMillis) + ",\n"); 95 infos.append(R"( "endTime": )" + std::to_string(result.endTimeMillis) + ",\n"); 96 infos.append(R"( "bundleRecords": [)"); 97 infos.append("\n"); 98 99 for (const auto& res : result.bundleRecords) { 100 ToString::BundleUsedRecordToString(res, infos); 101 } 102 103 infos.append(" ]"); 104 infos.append("\n"); 105 infos.append("}"); 106 infos.append("\n"); 107} 108 109void ToString::PermissionUsedTypeInfoToString(const PermissionUsedTypeInfo& info, std::string& infos) 110{ 111 infos.append("{\n"); 112 infos.append(R"( "tokenId": )" + std::to_string(info.tokenId) + ",\n"); 113 infos.append(R"( "permissionName": )" + info.permissionName + ",\n"); 114 infos.append(R"( "usedType": )" + std::to_string(info.type) + ",\n"); 115 infos.append("}\n"); 116} 117} // namespace AccessToken 118} // namespace Security 119} // namespace OHOS