blob: 75466d35d36674ea06853650fcebfb03248a73b0 [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/data_sharing/internal/group_data_proto_utils.h"
#include "base/notreached.h"
#include "components/data_sharing/public/group_data.h"
#include "components/data_sharing/public/protocol/group_data.pb.h"
namespace data_sharing {
namespace {
data_sharing_pb::MemberRole MemberRoleToProto(const MemberRole& member_role) {
switch (member_role) {
case MemberRole::kOwner:
return data_sharing_pb::MEMBER_ROLE_OWNER;
case MemberRole::kMember:
return data_sharing_pb::MEMBER_ROLE_MEMBER;
case MemberRole::kInvitee:
return data_sharing_pb::MEMBER_ROLE_INVITEE;
case MemberRole::kUnknown:
return data_sharing_pb::MEMBER_ROLE_UNSPECIFIED;
}
NOTREACHED_NORETURN();
}
MemberRole MemberRoleFromProto(const data_sharing_pb::MemberRole& member_role) {
switch (member_role) {
case data_sharing_pb::MEMBER_ROLE_OWNER:
return MemberRole::kOwner;
case data_sharing_pb::MEMBER_ROLE_MEMBER:
return MemberRole::kMember;
case data_sharing_pb::MEMBER_ROLE_INVITEE:
return MemberRole::kInvitee;
case data_sharing_pb::MEMBER_ROLE_UNSPECIFIED:
return MemberRole::kUnknown;
}
NOTREACHED_NORETURN();
}
data_sharing_pb::GroupMember GroupMemberToProto(
const GroupMember& group_member) {
data_sharing_pb::GroupMember result;
result.set_gaia_id(group_member.gaia_id);
result.set_display_name(group_member.display_name);
result.set_email(group_member.email);
result.set_role(MemberRoleToProto(group_member.role));
result.set_avatar_url(group_member.avatar_url.spec());
return result;
}
GroupMember GroupMemberFromProto(
const data_sharing_pb::GroupMember& group_member_proto) {
GroupMember result;
result.gaia_id = group_member_proto.gaia_id();
result.display_name = group_member_proto.display_name();
result.email = group_member_proto.email();
result.role = MemberRoleFromProto(group_member_proto.role());
result.avatar_url = GURL(group_member_proto.avatar_url());
return result;
}
} // namespace
data_sharing_pb::GroupData GroupDataToProto(const GroupData& group_data) {
data_sharing_pb::GroupData result;
result.set_group_id(group_data.group_token.group_id.value());
result.set_display_name(group_data.display_name);
for (const auto& member : group_data.members) {
*result.add_members() = GroupMemberToProto(member);
}
result.set_access_token(group_data.group_token.access_token);
return result;
}
GroupData GroupDataFromProto(
const data_sharing_pb::GroupData& group_data_proto) {
GroupData result;
result.group_token.group_id = GroupId(group_data_proto.group_id());
result.display_name = group_data_proto.display_name();
for (const auto& member_proto : group_data_proto.members()) {
result.members.push_back(GroupMemberFromProto(member_proto));
}
result.group_token.access_token = group_data_proto.access_token();
return result;
}
} // namespace data_sharing