1/* 2 * Copyright (c) 2023-2024 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 "accessee.h" 17#include "cJSON.h" 18#include "distributed_device_profile_constants.h" 19#include "macro_utils.h" 20#include "profile_utils.h" 21 22namespace OHOS { 23namespace DistributedDeviceProfile { 24namespace { 25 const std::string TAG = "Accessee"; 26} 27Accessee::Accessee() 28 : accesseeId_(0), 29 accesseeDeviceId_(""), 30 accesseeUserId_(-1), 31 accesseeAccountId_(""), 32 accesseeTokenId_(-1), 33 accesseeBundleName_(""), 34 accesseeHapSignature_(""), 35 accesseeBindLevel_(static_cast<uint32_t>(BindLevel::MIN)) 36{ 37} 38 39int64_t Accessee::GetAccesseeId() 40{ 41 return accesseeId_; 42} 43 44void Accessee::SetAccesseeId(int64_t accesseeId) 45{ 46 accesseeId_ = accesseeId; 47} 48 49std::string Accessee::GetAccesseeDeviceId() const 50{ 51 return accesseeDeviceId_; 52} 53 54void Accessee::SetAccesseeDeviceId(const std::string& accesseeDeviceId) 55{ 56 accesseeDeviceId_ = accesseeDeviceId; 57} 58 59int32_t Accessee::GetAccesseeUserId() const 60{ 61 return accesseeUserId_; 62} 63 64void Accessee::SetAccesseeUserId(int32_t accesseeUserId) 65{ 66 accesseeUserId_ = accesseeUserId; 67} 68 69std::string Accessee::GetAccesseeAccountId() const 70{ 71 return accesseeAccountId_; 72} 73 74void Accessee::SetAccesseeAccountId(const std::string& accesseeAccountId) 75{ 76 accesseeAccountId_ = accesseeAccountId; 77} 78 79int64_t Accessee::GetAccesseeTokenId() const 80{ 81 return accesseeTokenId_; 82} 83 84void Accessee::SetAccesseeTokenId(int64_t accesseeTokenId) 85{ 86 accesseeTokenId_ = accesseeTokenId; 87} 88 89std::string Accessee::GetAccesseeBundleName() const 90{ 91 return accesseeBundleName_; 92} 93 94void Accessee::SetAccesseeBundleName(const std::string& accesseeBundleName) 95{ 96 accesseeBundleName_ = accesseeBundleName; 97} 98 99std::string Accessee::GetAccesseeHapSignature() const 100{ 101 return accesseeHapSignature_; 102} 103 104void Accessee::SetAccesseeHapSignature(const std::string& accesseeHapSignature) 105{ 106 accesseeHapSignature_ = accesseeHapSignature; 107} 108 109uint32_t Accessee::GetAccesseeBindLevel() const 110{ 111 return accesseeBindLevel_; 112} 113 114void Accessee::SetAccesseeBindLevel(uint32_t accesseeBindLevel) 115{ 116 accesseeBindLevel_ = accesseeBindLevel; 117} 118 119bool Accessee::Marshalling(MessageParcel& parcel) const 120{ 121 WRITE_HELPER_RET(parcel, Int64, accesseeId_, false); 122 WRITE_HELPER_RET(parcel, String, accesseeDeviceId_, false); 123 WRITE_HELPER_RET(parcel, Int32, accesseeUserId_, false); 124 WRITE_HELPER_RET(parcel, String, accesseeAccountId_, false); 125 WRITE_HELPER_RET(parcel, Int64, accesseeTokenId_, false); 126 WRITE_HELPER_RET(parcel, String, accesseeBundleName_, false); 127 WRITE_HELPER_RET(parcel, String, accesseeHapSignature_, false); 128 WRITE_HELPER_RET(parcel, Uint32, accesseeBindLevel_, false); 129 return true; 130} 131 132bool Accessee::UnMarshalling(MessageParcel& parcel) 133{ 134 READ_HELPER_RET(parcel, Int64, accesseeId_, false); 135 READ_HELPER_RET(parcel, String, accesseeDeviceId_, false); 136 READ_HELPER_RET(parcel, Int32, accesseeUserId_, false); 137 READ_HELPER_RET(parcel, String, accesseeAccountId_, false); 138 READ_HELPER_RET(parcel, Int64, accesseeTokenId_, false); 139 READ_HELPER_RET(parcel, String, accesseeBundleName_, false); 140 READ_HELPER_RET(parcel, String, accesseeHapSignature_, false); 141 READ_HELPER_RET(parcel, Uint32, accesseeBindLevel_, false); 142 return true; 143} 144 145std::string Accessee::dump() const 146{ 147 cJSON* json = cJSON_CreateObject(); 148 if (!cJSON_IsObject(json)) { 149 cJSON_Delete(json); 150 return EMPTY_STRING; 151 } 152 cJSON_AddNumberToObject(json, ACCESSEE_ID.c_str(), accesseeId_); 153 cJSON_AddStringToObject(json, ACCESSEE_DEVICE_ID.c_str(), 154 ProfileUtils::GetAnonyString(accesseeDeviceId_).c_str()); 155 cJSON_AddStringToObject(json, ACCESSEE_USER_ID.c_str(), 156 ProfileUtils::GetAnonyString(std::to_string(accesseeUserId_)).c_str()); 157 cJSON_AddStringToObject(json, ACCESSEE_ACCOUNT_ID.c_str(), 158 ProfileUtils::GetAnonyString(accesseeAccountId_).c_str()); 159 cJSON_AddNumberToObject(json, ACCESSEE_TOKEN_ID.c_str(), accesseeTokenId_); 160 cJSON_AddStringToObject(json, ACCESSEE_BUNDLE_NAME.c_str(), accesseeBundleName_.c_str()); 161 cJSON_AddStringToObject(json, ACCESSEE_HAP_SIGNATURE.c_str(), accesseeHapSignature_.c_str()); 162 cJSON_AddNumberToObject(json, ACCESSEE_BIND_LEVEL.c_str(), accesseeBindLevel_); 163 char* jsonChars = cJSON_PrintUnformatted(json); 164 if (jsonChars == NULL) { 165 cJSON_Delete(json); 166 HILOGE("cJSON formatted to string failed!"); 167 return EMPTY_STRING; 168 } 169 std::string jsonStr = jsonChars; 170 cJSON_Delete(json); 171 cJSON_free(jsonChars); 172 return jsonStr; 173} 174} // namespace DistributedDeviceProfile 175} // namespace OHOS