use super::models::Tracking;
use super::operation::Result;
use crate::dhl::constants;
pub struct TrackingApi {
pub base_url: String,
pub api_key: &'static str,
}
impl TrackingApi {
pub fn new(api_key: &'static str) -> Self {
TrackingApi {
base_url: String::from(constants::TRACKING_BASE_URL),
api_key,
}
}
pub fn get_tracking_sync(&self, tracking_number: &str) -> Result<Tracking> {
let tracking: Tracking = reqwest::blocking::Client::new()
.get(&self.base_url)
.query(&[("trackingNumber", tracking_number), ("service", "express")])
.header("DHL-API-Key", self.api_key)
.send()?
.json()?;
Ok(tracking)
}
pub async fn get_tracking(&self, tracking_number: &str) -> Result<Tracking> {
let tracking: Tracking = reqwest::Client::new()
.get(&self.base_url)
.query(&[("trackingNumber", tracking_number), ("service", "express")])
.header("DHL-API-Key", self.api_key)
.send()
.await?
.json()
.await?;
Ok(tracking)
}
}