mod context;
pub mod cookies;
mod options;
mod request;
mod response;
pub use context::APIRequestContext;
pub use options::{APIContextOptions, CredentialSend, HttpCredentials, ProxyConfig};
pub use request::{APIRequestBuilder, MultipartField};
pub use response::APIResponse;
use std::time::Duration;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum APIError {
#[error("request failed: {0}")]
RequestFailed(String),
#[error("request timeout after {0:?}")]
Timeout(Duration),
#[error("failed to build request: {0}")]
BuildError(String),
#[error("failed to parse response: {0}")]
ParseError(String),
#[error("invalid URL: {0}")]
InvalidUrl(String),
#[error("JSON error: {0}")]
JsonError(String),
#[error("API context is disposed")]
Disposed,
#[error("HTTP error: {0}")]
Http(#[from] reqwest::Error),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum HttpMethod {
Get,
Post,
Put,
Patch,
Delete,
Head,
}
impl HttpMethod {
pub fn to_reqwest(&self) -> reqwest::Method {
match self {
Self::Get => reqwest::Method::GET,
Self::Post => reqwest::Method::POST,
Self::Put => reqwest::Method::PUT,
Self::Patch => reqwest::Method::PATCH,
Self::Delete => reqwest::Method::DELETE,
Self::Head => reqwest::Method::HEAD,
}
}
}
#[cfg(test)]
mod tests;