Line data Source code
1 : /**
2 : * Copyright Soramitsu Co., Ltd. All Rights Reserved.
3 : * SPDX-License-Identifier: Apache-2.0
4 : */
5 :
6 : #include "backend/protobuf/query_responses/proto_role_permissions_response.hpp"
7 : #include <boost/range/numeric.hpp>
8 : #include "backend/protobuf/permissions.hpp"
9 : #include "utils/string_builder.hpp"
10 :
11 : namespace shared_model {
12 : namespace proto {
13 :
14 : template <typename QueryResponseType>
15 : RolePermissionsResponse::RolePermissionsResponse(
16 : QueryResponseType &&queryResponse)
17 5 : : CopyableProto(std::forward<QueryResponseType>(queryResponse)),
18 5 : rolePermissionsResponse_{proto_->role_permissions_response()},
19 : rolePermissions_{[this] {
20 2 : return boost::accumulate(
21 2 : rolePermissionsResponse_.permissions(),
22 2 : interface::RolePermissionSet{},
23 : [](auto &&permissions, const auto &permission) {
24 3 : permissions.set(permissions::fromTransport(
25 : static_cast<iroha::protocol::RolePermission>(
26 3 : permission)));
27 3 : return std::forward<decltype(permissions)>(permissions);
28 : });
29 5 : }} {}
30 :
31 : template RolePermissionsResponse::RolePermissionsResponse(
32 : RolePermissionsResponse::TransportType &);
33 : template RolePermissionsResponse::RolePermissionsResponse(
34 : const RolePermissionsResponse::TransportType &);
35 : template RolePermissionsResponse::RolePermissionsResponse(
36 : RolePermissionsResponse::TransportType &&);
37 :
38 : RolePermissionsResponse::RolePermissionsResponse(
39 : const RolePermissionsResponse &o)
40 0 : : RolePermissionsResponse(o.proto_) {}
41 :
42 : RolePermissionsResponse::RolePermissionsResponse(
43 : RolePermissionsResponse &&o)
44 5 : : RolePermissionsResponse(std::move(o.proto_)) {}
45 :
46 : const interface::RolePermissionSet &
47 : RolePermissionsResponse::rolePermissions() const {
48 2 : return *rolePermissions_;
49 : }
50 :
51 : std::string RolePermissionsResponse::toString() const {
52 0 : return detail::PrettyStringBuilder()
53 0 : .init("RolePermissionsResponse")
54 0 : .appendAll(permissions::toString(rolePermissions()),
55 : [](auto p) { return p; })
56 0 : .finalize();
57 0 : }
58 :
59 : } // namespace proto
60 : } // namespace shared_model
|