1f8af9c48Sopenharmony_ci/*
2f8af9c48Sopenharmony_ci * Copyright (c) 2023-2024 Huawei Device Co., Ltd.
3f8af9c48Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4f8af9c48Sopenharmony_ci * you may not use this file except in compliance with the License.
5f8af9c48Sopenharmony_ci * You may obtain a copy of the License at
6f8af9c48Sopenharmony_ci *
7f8af9c48Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8f8af9c48Sopenharmony_ci *
9f8af9c48Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10f8af9c48Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11f8af9c48Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12f8af9c48Sopenharmony_ci * See the License for the specific language governing permissions and
13f8af9c48Sopenharmony_ci * limitations under the License.
14f8af9c48Sopenharmony_ci */
15f8af9c48Sopenharmony_ci
16f8af9c48Sopenharmony_ci#include "accessee.h"
17f8af9c48Sopenharmony_ci#include "cJSON.h"
18f8af9c48Sopenharmony_ci#include "distributed_device_profile_constants.h"
19f8af9c48Sopenharmony_ci#include "macro_utils.h"
20f8af9c48Sopenharmony_ci#include "profile_utils.h"
21f8af9c48Sopenharmony_ci
22f8af9c48Sopenharmony_cinamespace OHOS {
23f8af9c48Sopenharmony_cinamespace DistributedDeviceProfile {
24f8af9c48Sopenharmony_cinamespace {
25f8af9c48Sopenharmony_ci    const std::string TAG = "Accessee";
26f8af9c48Sopenharmony_ci}
27f8af9c48Sopenharmony_ciAccessee::Accessee()
28f8af9c48Sopenharmony_ci    : accesseeId_(0),
29f8af9c48Sopenharmony_ci    accesseeDeviceId_(""),
30f8af9c48Sopenharmony_ci    accesseeUserId_(-1),
31f8af9c48Sopenharmony_ci    accesseeAccountId_(""),
32f8af9c48Sopenharmony_ci    accesseeTokenId_(-1),
33f8af9c48Sopenharmony_ci    accesseeBundleName_(""),
34f8af9c48Sopenharmony_ci    accesseeHapSignature_(""),
35f8af9c48Sopenharmony_ci    accesseeBindLevel_(static_cast<uint32_t>(BindLevel::MIN))
36f8af9c48Sopenharmony_ci{
37f8af9c48Sopenharmony_ci}
38f8af9c48Sopenharmony_ci
39f8af9c48Sopenharmony_ciint64_t Accessee::GetAccesseeId()
40f8af9c48Sopenharmony_ci{
41f8af9c48Sopenharmony_ci    return accesseeId_;
42f8af9c48Sopenharmony_ci}
43f8af9c48Sopenharmony_ci
44f8af9c48Sopenharmony_civoid Accessee::SetAccesseeId(int64_t accesseeId)
45f8af9c48Sopenharmony_ci{
46f8af9c48Sopenharmony_ci    accesseeId_ = accesseeId;
47f8af9c48Sopenharmony_ci}
48f8af9c48Sopenharmony_ci
49f8af9c48Sopenharmony_cistd::string Accessee::GetAccesseeDeviceId() const
50f8af9c48Sopenharmony_ci{
51f8af9c48Sopenharmony_ci    return accesseeDeviceId_;
52f8af9c48Sopenharmony_ci}
53f8af9c48Sopenharmony_ci
54f8af9c48Sopenharmony_civoid Accessee::SetAccesseeDeviceId(const std::string& accesseeDeviceId)
55f8af9c48Sopenharmony_ci{
56f8af9c48Sopenharmony_ci    accesseeDeviceId_ = accesseeDeviceId;
57f8af9c48Sopenharmony_ci}
58f8af9c48Sopenharmony_ci
59f8af9c48Sopenharmony_ciint32_t Accessee::GetAccesseeUserId() const
60f8af9c48Sopenharmony_ci{
61f8af9c48Sopenharmony_ci    return accesseeUserId_;
62f8af9c48Sopenharmony_ci}
63f8af9c48Sopenharmony_ci
64f8af9c48Sopenharmony_civoid Accessee::SetAccesseeUserId(int32_t accesseeUserId)
65f8af9c48Sopenharmony_ci{
66f8af9c48Sopenharmony_ci    accesseeUserId_ = accesseeUserId;
67f8af9c48Sopenharmony_ci}
68f8af9c48Sopenharmony_ci
69f8af9c48Sopenharmony_cistd::string Accessee::GetAccesseeAccountId() const
70f8af9c48Sopenharmony_ci{
71f8af9c48Sopenharmony_ci    return accesseeAccountId_;
72f8af9c48Sopenharmony_ci}
73f8af9c48Sopenharmony_ci
74f8af9c48Sopenharmony_civoid Accessee::SetAccesseeAccountId(const std::string& accesseeAccountId)
75f8af9c48Sopenharmony_ci{
76f8af9c48Sopenharmony_ci    accesseeAccountId_ = accesseeAccountId;
77f8af9c48Sopenharmony_ci}
78f8af9c48Sopenharmony_ci
79f8af9c48Sopenharmony_ciint64_t Accessee::GetAccesseeTokenId() const
80f8af9c48Sopenharmony_ci{
81f8af9c48Sopenharmony_ci    return accesseeTokenId_;
82f8af9c48Sopenharmony_ci}
83f8af9c48Sopenharmony_ci
84f8af9c48Sopenharmony_civoid Accessee::SetAccesseeTokenId(int64_t accesseeTokenId)
85f8af9c48Sopenharmony_ci{
86f8af9c48Sopenharmony_ci    accesseeTokenId_ = accesseeTokenId;
87f8af9c48Sopenharmony_ci}
88f8af9c48Sopenharmony_ci
89f8af9c48Sopenharmony_cistd::string Accessee::GetAccesseeBundleName() const
90f8af9c48Sopenharmony_ci{
91f8af9c48Sopenharmony_ci    return accesseeBundleName_;
92f8af9c48Sopenharmony_ci}
93f8af9c48Sopenharmony_ci
94f8af9c48Sopenharmony_civoid Accessee::SetAccesseeBundleName(const std::string& accesseeBundleName)
95f8af9c48Sopenharmony_ci{
96f8af9c48Sopenharmony_ci    accesseeBundleName_ = accesseeBundleName;
97f8af9c48Sopenharmony_ci}
98f8af9c48Sopenharmony_ci
99f8af9c48Sopenharmony_cistd::string Accessee::GetAccesseeHapSignature() const
100f8af9c48Sopenharmony_ci{
101f8af9c48Sopenharmony_ci    return accesseeHapSignature_;
102f8af9c48Sopenharmony_ci}
103f8af9c48Sopenharmony_ci
104f8af9c48Sopenharmony_civoid Accessee::SetAccesseeHapSignature(const std::string& accesseeHapSignature)
105f8af9c48Sopenharmony_ci{
106f8af9c48Sopenharmony_ci    accesseeHapSignature_ = accesseeHapSignature;
107f8af9c48Sopenharmony_ci}
108f8af9c48Sopenharmony_ci
109f8af9c48Sopenharmony_ciuint32_t Accessee::GetAccesseeBindLevel() const
110f8af9c48Sopenharmony_ci{
111f8af9c48Sopenharmony_ci    return accesseeBindLevel_;
112f8af9c48Sopenharmony_ci}
113f8af9c48Sopenharmony_ci
114f8af9c48Sopenharmony_civoid Accessee::SetAccesseeBindLevel(uint32_t accesseeBindLevel)
115f8af9c48Sopenharmony_ci{
116f8af9c48Sopenharmony_ci    accesseeBindLevel_ = accesseeBindLevel;
117f8af9c48Sopenharmony_ci}
118f8af9c48Sopenharmony_ci
119f8af9c48Sopenharmony_cibool Accessee::Marshalling(MessageParcel& parcel) const
120f8af9c48Sopenharmony_ci{
121f8af9c48Sopenharmony_ci    WRITE_HELPER_RET(parcel, Int64, accesseeId_, false);
122f8af9c48Sopenharmony_ci    WRITE_HELPER_RET(parcel, String, accesseeDeviceId_, false);
123f8af9c48Sopenharmony_ci    WRITE_HELPER_RET(parcel, Int32, accesseeUserId_, false);
124f8af9c48Sopenharmony_ci    WRITE_HELPER_RET(parcel, String, accesseeAccountId_, false);
125f8af9c48Sopenharmony_ci    WRITE_HELPER_RET(parcel, Int64, accesseeTokenId_, false);
126f8af9c48Sopenharmony_ci    WRITE_HELPER_RET(parcel, String, accesseeBundleName_, false);
127f8af9c48Sopenharmony_ci    WRITE_HELPER_RET(parcel, String, accesseeHapSignature_, false);
128f8af9c48Sopenharmony_ci    WRITE_HELPER_RET(parcel, Uint32, accesseeBindLevel_, false);
129f8af9c48Sopenharmony_ci    return true;
130f8af9c48Sopenharmony_ci}
131f8af9c48Sopenharmony_ci
132f8af9c48Sopenharmony_cibool Accessee::UnMarshalling(MessageParcel& parcel)
133f8af9c48Sopenharmony_ci{
134f8af9c48Sopenharmony_ci    READ_HELPER_RET(parcel, Int64, accesseeId_, false);
135f8af9c48Sopenharmony_ci    READ_HELPER_RET(parcel, String, accesseeDeviceId_, false);
136f8af9c48Sopenharmony_ci    READ_HELPER_RET(parcel, Int32, accesseeUserId_, false);
137f8af9c48Sopenharmony_ci    READ_HELPER_RET(parcel, String, accesseeAccountId_, false);
138f8af9c48Sopenharmony_ci    READ_HELPER_RET(parcel, Int64, accesseeTokenId_, false);
139f8af9c48Sopenharmony_ci    READ_HELPER_RET(parcel, String, accesseeBundleName_, false);
140f8af9c48Sopenharmony_ci    READ_HELPER_RET(parcel, String, accesseeHapSignature_, false);
141f8af9c48Sopenharmony_ci    READ_HELPER_RET(parcel, Uint32, accesseeBindLevel_, false);
142f8af9c48Sopenharmony_ci    return true;
143f8af9c48Sopenharmony_ci}
144f8af9c48Sopenharmony_ci
145f8af9c48Sopenharmony_cistd::string Accessee::dump() const
146f8af9c48Sopenharmony_ci{
147f8af9c48Sopenharmony_ci    cJSON* json = cJSON_CreateObject();
148f8af9c48Sopenharmony_ci    if (!cJSON_IsObject(json)) {
149f8af9c48Sopenharmony_ci        cJSON_Delete(json);
150f8af9c48Sopenharmony_ci        return EMPTY_STRING;
151f8af9c48Sopenharmony_ci    }
152f8af9c48Sopenharmony_ci    cJSON_AddNumberToObject(json, ACCESSEE_ID.c_str(), accesseeId_);
153f8af9c48Sopenharmony_ci    cJSON_AddStringToObject(json, ACCESSEE_DEVICE_ID.c_str(),
154f8af9c48Sopenharmony_ci        ProfileUtils::GetAnonyString(accesseeDeviceId_).c_str());
155f8af9c48Sopenharmony_ci    cJSON_AddStringToObject(json, ACCESSEE_USER_ID.c_str(),
156f8af9c48Sopenharmony_ci        ProfileUtils::GetAnonyString(std::to_string(accesseeUserId_)).c_str());
157f8af9c48Sopenharmony_ci    cJSON_AddStringToObject(json, ACCESSEE_ACCOUNT_ID.c_str(),
158f8af9c48Sopenharmony_ci        ProfileUtils::GetAnonyString(accesseeAccountId_).c_str());
159f8af9c48Sopenharmony_ci    cJSON_AddNumberToObject(json, ACCESSEE_TOKEN_ID.c_str(), accesseeTokenId_);
160f8af9c48Sopenharmony_ci    cJSON_AddStringToObject(json, ACCESSEE_BUNDLE_NAME.c_str(), accesseeBundleName_.c_str());
161f8af9c48Sopenharmony_ci    cJSON_AddStringToObject(json, ACCESSEE_HAP_SIGNATURE.c_str(), accesseeHapSignature_.c_str());
162f8af9c48Sopenharmony_ci    cJSON_AddNumberToObject(json, ACCESSEE_BIND_LEVEL.c_str(), accesseeBindLevel_);
163f8af9c48Sopenharmony_ci    char* jsonChars = cJSON_PrintUnformatted(json);
164f8af9c48Sopenharmony_ci    if (jsonChars == NULL) {
165f8af9c48Sopenharmony_ci        cJSON_Delete(json);
166f8af9c48Sopenharmony_ci        HILOGE("cJSON formatted to string failed!");
167f8af9c48Sopenharmony_ci        return EMPTY_STRING;
168f8af9c48Sopenharmony_ci    }
169f8af9c48Sopenharmony_ci    std::string jsonStr = jsonChars;
170f8af9c48Sopenharmony_ci    cJSON_Delete(json);
171f8af9c48Sopenharmony_ci    cJSON_free(jsonChars);
172f8af9c48Sopenharmony_ci    return jsonStr;
173f8af9c48Sopenharmony_ci}
174f8af9c48Sopenharmony_ci} // namespace DistributedDeviceProfile
175f8af9c48Sopenharmony_ci} // namespace OHOS