cstats-core 0.1.1

Core library for cstats - statistical analysis and metrics collection
Documentation
//! API client and data structures

use std::time::Duration;

use reqwest::Client;
// Re-export serde traits for public use
pub use serde::{Deserialize, Serialize};

use crate::{config::ApiConfig, Error, Result};

pub mod client;
pub mod types;
pub mod usage_tracker;

pub use client::{AnthropicApiClient, ApiClient};
pub use types::*;
pub use usage_tracker::LocalUsageTracker;

/// HTTP client wrapper for API operations
#[derive(Debug, Clone)]
pub struct HttpClient {
    client: Client,
    config: ApiConfig,
}

impl HttpClient {
    /// Create a new HTTP client with the given configuration
    pub fn new(config: ApiConfig) -> Result<Self> {
        let client = Client::builder()
            .timeout(Duration::from_secs(config.timeout_seconds))
            .build()
            .map_err(Error::Http)?;

        Ok(Self { client, config })
    }

    /// Get the underlying reqwest client
    pub fn client(&self) -> &Client {
        &self.client
    }

    /// Get the configuration
    pub fn config(&self) -> &ApiConfig {
        &self.config
    }
}