rippled
Loading...
Searching...
No Matches
Credential.h
1// This file is auto-generated. Do not edit.
2#pragma once
3
4#include <xrpl/protocol/STLedgerEntry.h>
5#include <xrpl/protocol/STParsedJSON.h>
6#include <xrpl/protocol/jss.h>
7#include <xrpl/protocol_autogen/LedgerEntryBase.h>
8#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
9#include <xrpl/json/json_value.h>
10
11#include <stdexcept>
12#include <optional>
13
14namespace xrpl::ledger_entries {
15
16class CredentialBuilder;
17
28{
29public:
30 static constexpr LedgerEntryType entryType = ltCREDENTIAL;
31
37 : LedgerEntryBase(std::move(sle))
38 {
39 // Verify ledger entry type
40 if (sle_->getType() != entryType)
41 {
42 throw std::runtime_error("Invalid ledger entry type for Credential");
43 }
44 }
45
46 // Ledger entry-specific field getters
47
52 [[nodiscard]]
53 SF_ACCOUNT::type::value_type
54 getSubject() const
55 {
56 return this->sle_->at(sfSubject);
57 }
58
63 [[nodiscard]]
64 SF_ACCOUNT::type::value_type
65 getIssuer() const
66 {
67 return this->sle_->at(sfIssuer);
68 }
69
74 [[nodiscard]]
75 SF_VL::type::value_type
77 {
78 return this->sle_->at(sfCredentialType);
79 }
80
85 [[nodiscard]]
88 {
89 if (hasExpiration())
90 return this->sle_->at(sfExpiration);
91 return std::nullopt;
92 }
93
98 [[nodiscard]]
99 bool
101 {
102 return this->sle_->isFieldPresent(sfExpiration);
103 }
104
109 [[nodiscard]]
111 getURI() const
112 {
113 if (hasURI())
114 return this->sle_->at(sfURI);
115 return std::nullopt;
116 }
117
122 [[nodiscard]]
123 bool
124 hasURI() const
125 {
126 return this->sle_->isFieldPresent(sfURI);
127 }
128
133 [[nodiscard]]
134 SF_UINT64::type::value_type
136 {
137 return this->sle_->at(sfIssuerNode);
138 }
139
144 [[nodiscard]]
147 {
148 if (hasSubjectNode())
149 return this->sle_->at(sfSubjectNode);
150 return std::nullopt;
151 }
152
157 [[nodiscard]]
158 bool
160 {
161 return this->sle_->isFieldPresent(sfSubjectNode);
162 }
163
168 [[nodiscard]]
169 SF_UINT256::type::value_type
171 {
172 return this->sle_->at(sfPreviousTxnID);
173 }
174
179 [[nodiscard]]
180 SF_UINT32::type::value_type
182 {
183 return this->sle_->at(sfPreviousTxnLgrSeq);
184 }
185};
186
194class CredentialBuilder : public LedgerEntryBuilderBase<CredentialBuilder>
195{
196public:
216
223 {
224 if (sle->at(sfLedgerEntryType) != ltCREDENTIAL)
225 {
226 throw std::runtime_error("Invalid ledger entry type for Credential");
227 }
228 object_ = *sle;
229 }
230
239 {
240 object_[sfSubject] = value;
241 return *this;
242 }
243
250 {
251 object_[sfIssuer] = value;
252 return *this;
253 }
254
261 {
262 object_[sfCredentialType] = value;
263 return *this;
264 }
265
272 {
273 object_[sfExpiration] = value;
274 return *this;
275 }
276
283 {
284 object_[sfURI] = value;
285 return *this;
286 }
287
294 {
295 object_[sfIssuerNode] = value;
296 return *this;
297 }
298
305 {
306 object_[sfSubjectNode] = value;
307 return *this;
308 }
309
316 {
317 object_[sfPreviousTxnID] = value;
318 return *this;
319 }
320
327 {
328 object_[sfPreviousTxnLgrSeq] = value;
329 return *this;
330 }
331
338 build(uint256 const& index)
339 {
340 return Credential{std::make_shared<SLE>(std::move(object_), index)};
341 }
342};
343
344} // namespace xrpl::ledger_entries
Builder for Credential ledger entries.
Definition Credential.h:195
CredentialBuilder & setIssuer(std::decay_t< typename SF_ACCOUNT::type::value_type > const &value)
Set sfIssuer (soeREQUIRED)
Definition Credential.h:249
CredentialBuilder & setIssuerNode(std::decay_t< typename SF_UINT64::type::value_type > const &value)
Set sfIssuerNode (soeREQUIRED)
Definition Credential.h:293
CredentialBuilder & setURI(std::decay_t< typename SF_VL::type::value_type > const &value)
Set sfURI (soeOPTIONAL)
Definition Credential.h:282
CredentialBuilder & setPreviousTxnID(std::decay_t< typename SF_UINT256::type::value_type > const &value)
Set sfPreviousTxnID (soeREQUIRED)
Definition Credential.h:315
CredentialBuilder & setSubjectNode(std::decay_t< typename SF_UINT64::type::value_type > const &value)
Set sfSubjectNode (soeOPTIONAL)
Definition Credential.h:304
CredentialBuilder(std::shared_ptr< SLE const > sle)
Construct a CredentialBuilder from an existing SLE object.
Definition Credential.h:222
CredentialBuilder(std::decay_t< typename SF_ACCOUNT::type::value_type > const &subject, std::decay_t< typename SF_ACCOUNT::type::value_type > const &issuer, std::decay_t< typename SF_VL::type::value_type > const &credentialType, std::decay_t< typename SF_UINT64::type::value_type > const &issuerNode, std::decay_t< typename SF_UINT256::type::value_type > const &previousTxnID, std::decay_t< typename SF_UINT32::type::value_type > const &previousTxnLgrSeq)
Construct a new CredentialBuilder with required fields.
Definition Credential.h:206
Credential build(uint256 const &index)
Build and return the completed Credential wrapper.
Definition Credential.h:338
CredentialBuilder & setCredentialType(std::decay_t< typename SF_VL::type::value_type > const &value)
Set sfCredentialType (soeREQUIRED)
Definition Credential.h:260
CredentialBuilder & setExpiration(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfExpiration (soeOPTIONAL)
Definition Credential.h:271
CredentialBuilder & setPreviousTxnLgrSeq(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfPreviousTxnLgrSeq (soeREQUIRED)
Definition Credential.h:326
CredentialBuilder & setSubject(std::decay_t< typename SF_ACCOUNT::type::value_type > const &value)
Ledger entry-specific field setters.
Definition Credential.h:238
Ledger Entry: Credential.
Definition Credential.h:28
protocol_autogen::Optional< SF_UINT32::type::value_type > getExpiration() const
Get sfExpiration (soeOPTIONAL)
Definition Credential.h:87
bool hasSubjectNode() const
Check if sfSubjectNode is present.
Definition Credential.h:159
SF_UINT256::type::value_type getPreviousTxnID() const
Get sfPreviousTxnID (soeREQUIRED)
Definition Credential.h:170
SF_ACCOUNT::type::value_type getIssuer() const
Get sfIssuer (soeREQUIRED)
Definition Credential.h:65
bool hasExpiration() const
Check if sfExpiration is present.
Definition Credential.h:100
static constexpr LedgerEntryType entryType
Definition Credential.h:30
SF_UINT64::type::value_type getIssuerNode() const
Get sfIssuerNode (soeREQUIRED)
Definition Credential.h:135
Credential(std::shared_ptr< SLE const > sle)
Construct a Credential ledger entry wrapper from an existing SLE object.
Definition Credential.h:36
SF_VL::type::value_type getCredentialType() const
Get sfCredentialType (soeREQUIRED)
Definition Credential.h:76
bool hasURI() const
Check if sfURI is present.
Definition Credential.h:124
protocol_autogen::Optional< SF_VL::type::value_type > getURI() const
Get sfURI (soeOPTIONAL)
Definition Credential.h:111
protocol_autogen::Optional< SF_UINT64::type::value_type > getSubjectNode() const
Get sfSubjectNode (soeOPTIONAL)
Definition Credential.h:146
SF_ACCOUNT::type::value_type getSubject() const
Get sfSubject (soeREQUIRED)
Definition Credential.h:54
SF_UINT32::type::value_type getPreviousTxnLgrSeq() const
Get sfPreviousTxnLgrSeq (soeREQUIRED)
Definition Credential.h:181
Base class for type-safe ledger entry wrappers.
std::shared_ptr< SLE const > sle_
The underlying serialized ledger entry being wrapped.
Base class for all ledger entry builders.
T is_same_v
STL namespace.
LedgerEntryType
Identifiers for on-ledger objects.