xrpl/asynch/clients/
async_client.rs

1use super::{client::XRPLClient, exceptions::XRPLClientResult, CommonFields};
2use crate::models::{
3    requests::{server_state::ServerState, XRPLRequest},
4    results::{server_state::ServerState as ServerStateResult, XRPLResponse},
5};
6
7#[allow(async_fn_in_trait)]
8pub trait XRPLAsyncClient: XRPLClient {
9    async fn request<'a: 'b, 'b>(
10        &self,
11        request: XRPLRequest<'a>,
12    ) -> XRPLClientResult<XRPLResponse<'b>> {
13        self.request_impl(request).await
14    }
15
16    async fn get_common_fields(&self) -> XRPLClientResult<CommonFields<'_>> {
17        let server_state = self.request(ServerState::new(None).into()).await?;
18        let server_state: ServerStateResult = server_state.try_into()?;
19        let common_fields = CommonFields {
20            network_id: None, // TODO Server state has no network ID.
21            build_version: Some(server_state.state.build_version),
22        };
23
24        Ok(common_fields)
25    }
26}
27
28impl<T: XRPLClient> XRPLAsyncClient for T {}