dexpaprika-cli 0.1.8

DexPaprika CLI — free DEX data from the terminal. Pools, tokens, on-chain trades across 33+ chains.
use anyhow::Result;
use serde::Serialize;
use std::time::Instant;

use crate::client::ApiClient;
use crate::output::OutputFormat;

#[derive(Debug, Serialize)]
pub struct StatusResult {
    pub dexpaprika: ApiStatus,
}

#[derive(Debug, Serialize)]
pub struct ApiStatus {
    pub status: String,
    pub response_time_ms: u128,
}

pub async fn execute_status(client: &ApiClient, output: OutputFormat, raw: bool) -> Result<()> {
    let dp_start = Instant::now();
    let dp_result: Result<serde_json::Value> = client.dexpaprika_get("/stats", &[]).await;
    let dp_time = dp_start.elapsed().as_millis();

    let result = StatusResult {
        dexpaprika: ApiStatus {
            status: if dp_result.is_ok() { "OK".into() } else { "ERROR".into() },
            response_time_ms: dp_time,
        },
    };

    match output {
        OutputFormat::Table => crate::output::status::print_status(&result),
        OutputFormat::Json => {
            crate::output::print_json_wrapped(&result, crate::output::ResponseMeta::dexpaprika("/status"), raw)?;
        }
    }
    Ok(())
}