use bytes::Bytes;
use http::StatusCode;
#[cfg(feature = "requests")]
pub mod models;
#[derive(Default)]
pub struct ApiRequest {
pub path: String,
pub parameters: Vec<(&'static str, String)>,
}
impl ApiRequest {
pub fn url(&self) -> String {
let mut url = format!("https://api.torn.com/v2{}?", self.path);
let mut first = true;
for (name, value) in &self.parameters {
if first {
first = false;
} else {
url.push('&');
}
url.push_str(&format!("{name}={value}"));
}
url
}
}
pub struct ApiResponse {
pub body: Option<Bytes>,
pub status: StatusCode,
}
pub trait IntoRequest: Send {
type Discriminant: Send + 'static;
type Response: for<'de> serde::Deserialize<'de> + Send;
fn into_request(self) -> (Self::Discriminant, ApiRequest);
}
#[cfg(test)]
mod test {}