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