xrpl_api/api/
account_info.rs

1//! <https://xrpl.org/account_info.html>
2
3use crate::{AccountRoot, Request, RetrieveLedgerSpec, ReturnLedgerSpec, WithLedgerSpec};
4use serde::{Deserialize, Serialize};
5
6#[derive(Default, Debug, Clone, Serialize)]
7pub struct AccountInfoRequest {
8    pub account: String,
9    #[serde(skip_serializing_if = "Option::is_none")]
10    pub queue: Option<bool>,
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub signer_lists: Option<bool>,
13    #[serde(flatten)]
14    pub ledger_spec: RetrieveLedgerSpec,
15}
16
17impl Request for AccountInfoRequest {
18    type Response = AccountInfoResponse;
19
20    fn method(&self) -> String {
21        "account_info".to_owned()
22    }
23}
24
25impl WithLedgerSpec for AccountInfoRequest {
26    fn as_ledger_spec(&self) -> &RetrieveLedgerSpec {
27        &self.ledger_spec
28    }
29
30    fn as_ledger_spec_mut(&mut self) -> &mut RetrieveLedgerSpec {
31        &mut self.ledger_spec
32    }
33}
34
35impl AccountInfoRequest {
36    pub fn new(account: &str) -> Self {
37        Self {
38            account: account.to_owned(),
39            ..Default::default()
40        }
41    }
42
43    // #TODO more builder methods
44}
45
46#[derive(Debug, Deserialize)]
47pub struct AccountInfoResponse {
48    // #TODO add missing fields!
49    pub account_data: AccountRoot,
50    #[serde(flatten)]
51    pub ledger_spec: ReturnLedgerSpec,
52}