xrpl_common_stdlib/objects/generated/
did.rs1use crate::host::Result;
4use crate::objects::traits::CurrentLedgerObjectCommonFields;
5use crate::objects::traits::LedgerObjectCommonFields;
6use crate::objects::{current_ledger_object, ledger_object};
7use crate::sfield;
8use crate::types::account_id::AccountID;
9use crate::types::blob::{StandardBlob, UriBlob};
10use crate::types::uint::Hash256;
11
12pub trait DIDFields: LedgerObjectCommonFields {
14 fn account(&self) -> Result<AccountID> {
16 ledger_object::get_field(self.get_slot_num(), sfield::Account)
17 }
18
19 fn did_document(&self) -> Result<Option<StandardBlob>> {
22 ledger_object::get_field_optional(self.get_slot_num(), sfield::DIDDocument)
23 }
24
25 fn uri(&self) -> Result<Option<UriBlob>> {
29 ledger_object::get_field_optional(self.get_slot_num(), sfield::URI)
30 }
31
32 fn data(&self) -> Result<Option<StandardBlob>> {
35 ledger_object::get_field_optional(self.get_slot_num(), sfield::Data)
36 }
37
38 fn owner_node(&self) -> Result<u64> {
41 ledger_object::get_field(self.get_slot_num(), sfield::OwnerNode)
42 }
43
44 fn previous_txn_id(&self) -> Result<Hash256> {
46 ledger_object::get_field(self.get_slot_num(), sfield::PreviousTxnID)
47 }
48
49 fn previous_txn_lgr_seq(&self) -> Result<u32> {
52 ledger_object::get_field(self.get_slot_num(), sfield::PreviousTxnLgrSeq)
53 }
54}
55
56pub trait CurrentDIDFields: CurrentLedgerObjectCommonFields {
58 fn account(&self) -> Result<AccountID> {
60 current_ledger_object::get_field(sfield::Account)
61 }
62
63 fn did_document(&self) -> Result<Option<StandardBlob>> {
66 current_ledger_object::get_field_optional(sfield::DIDDocument)
67 }
68
69 fn uri(&self) -> Result<Option<UriBlob>> {
73 current_ledger_object::get_field_optional(sfield::URI)
74 }
75
76 fn data(&self) -> Result<Option<StandardBlob>> {
79 current_ledger_object::get_field_optional(sfield::Data)
80 }
81
82 fn owner_node(&self) -> Result<u64> {
85 current_ledger_object::get_field(sfield::OwnerNode)
86 }
87
88 fn previous_txn_id(&self) -> Result<Hash256> {
90 current_ledger_object::get_field(sfield::PreviousTxnID)
91 }
92
93 fn previous_txn_lgr_seq(&self) -> Result<u32> {
96 current_ledger_object::get_field(sfield::PreviousTxnLgrSeq)
97 }
98}
99
100#[derive(Debug, Clone, Copy, Eq, PartialEq)]
101pub struct DID {
102 pub(crate) slot_num: i32,
103}
104
105impl DID {
106 pub fn new(slot_num: i32) -> Self {
108 Self { slot_num }
109 }
110}
111
112impl LedgerObjectCommonFields for DID {
113 fn get_slot_num(&self) -> i32 {
114 self.slot_num
115 }
116}
117
118impl DIDFields for DID {}
119
120#[cfg(test)]
121mod tests {
122 use super::*;
123 use crate::host::host_bindings_trait::MockHostBindings;
124 use crate::host::setup_mock;
125 use crate::objects::test_utils::*;
126
127 #[test]
128 fn read_all_fields() {
129 let mut mock = MockHostBindings::new();
130 mock_all_fields_present(&mut mock);
131 let _guard = setup_mock(mock);
132
133 let obj = DID::new(0);
134
135 assert!(obj.account().is_ok());
136 assert!(obj.owner_node().is_ok());
137 assert!(obj.previous_txn_id().is_ok());
138 assert!(obj.previous_txn_lgr_seq().is_ok());
139 assert!(obj.did_document().is_ok());
140 assert!(obj.uri().is_ok());
141 assert!(obj.data().is_ok());
142 }
143}