use std::time::Duration;
use reqwest::Client;
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;
#[derive(Debug, Clone)]
pub struct HttpClient {
client: Client,
config: ApiConfig,
}
impl HttpClient {
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 })
}
pub fn client(&self) -> &Client {
&self.client
}
pub fn config(&self) -> &ApiConfig {
&self.config
}
}