galoy-cli 0.1.7

A CLI Client for interacting with Galoy Backend
Documentation
use graphql_client::{reqwest::post_graphql, Response};

use crate::client::{
    errors::{api_error::ApiError, ClientError},
    queries::{realtime_price, RealtimePrice, RealtimePriceRealtimePrice},
    GaloyClient,
};

impl GaloyClient {
    pub async fn realtime_price(
        &self,
        currency: String,
    ) -> Result<RealtimePriceRealtimePrice, ClientError> {
        let variables = realtime_price::Variables {
            currency: Some(currency),
        };

        let response_body: Response<realtime_price::ResponseData> =
            post_graphql::<RealtimePrice, _>(&self.graphql_client, &self.api, variables)
                .await
                .map_err(|err| ApiError::IssueGettingResponse(anyhow::Error::new(err)))?;

        let response_data = response_body.data.ok_or(ApiError::IssueParsingResponse)?;

        let result = response_data.realtime_price;

        Ok(result)
    }

    pub async fn realtime_price_usd(&self) -> Result<RealtimePriceRealtimePrice, ClientError> {
        self.realtime_price("USD".to_string()).await
    }
}