xrpl_api/api/
with_ledger_spec.rs1use crate::{LedgerIndex, LedgerSpec, Request};
2use serde::{Deserialize, Serialize};
3
4pub trait WithLedgerSpec: Request {
7 fn as_ledger_spec(&self) -> &RetrieveLedgerSpec;
8 fn as_ledger_spec_mut(&mut self) -> &mut RetrieveLedgerSpec;
9
10 fn ledger_index(mut self, ledger_index: LedgerIndex) -> Self
11 where
12 Self: Sized,
13 {
14 self.as_ledger_spec_mut().ledger_index = Some(ledger_index);
15 self
16 }
17
18 fn ledger_hash(mut self, ledger_hash: impl Into<String>) -> Self
19 where
20 Self: Sized,
21 {
22 self.as_ledger_spec_mut().ledger_hash = Some(ledger_hash.into());
23 self
24 }
25
26 fn ledger(self, ledger: LedgerSpec) -> Self
27 where
28 Self: Sized,
29 {
30 match ledger {
31 LedgerSpec::LedgerIndex(ledger_index) => self.ledger_index(ledger_index),
32 LedgerSpec::LedgerHash(ledger_hash) => self.ledger_hash(ledger_hash),
33 }
34 }
35}
36
37#[derive(Default, Debug, Clone, Serialize)]
39pub struct RetrieveLedgerSpec {
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub ledger_hash: Option<String>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub ledger_index: Option<LedgerIndex>,
44}
45
46#[derive(Default, Debug, Clone, Serialize, Deserialize)]
48pub struct ReturnLedgerSpec {
49 pub ledger_hash: Option<String>,
50 pub ledger_index: Option<u32>,
51 pub ledger_current_index: Option<u32>,
52 pub validated: Option<bool>,
53}