pub mod config;
pub mod error;
pub mod http;
pub mod services;
pub mod types;
pub mod utils;
#[cfg(feature = "blocking")]
pub mod blocking;
use std::sync::Arc;
pub use config::{Config, Env};
pub use error::{Error, Result};
pub use http::HttpClient;
use services::address::AddressService;
use services::courier::CourierService;
use services::coverage_area::CoverageAreaService;
use services::credit::CreditService;
use services::order::OrderService;
use services::payment::PaymentService;
use services::pickup::PickupService;
#[derive(Debug, Clone)]
pub struct Client {
pub address: AddressService,
pub courier: CourierService,
pub coverage_area: CoverageAreaService,
pub credit: CreditService,
pub order: OrderService,
pub payment: PaymentService,
pub pickup: PickupService,
#[allow(dead_code)]
http: Arc<HttpClient>,
}
impl Client {
pub fn new(cfg: Config) -> Self {
let http = Arc::new(HttpClient::from_config(&cfg));
Self {
address: AddressService::new(http.clone()),
courier: CourierService::new(http.clone()),
coverage_area: CoverageAreaService::new(http.clone()),
credit: CreditService::new(http.clone()),
order: OrderService::new(http.clone()),
payment: PaymentService::new(http.clone()),
pickup: PickupService::new(http.clone()),
http,
}
}
}