use crate::http_client::HttpClient;
use crate::Request;
#[cfg(feature = "native-client")]
use super::http_client::native::NativeClient;
#[derive(Debug, Default)]
pub struct Client<C: HttpClient> {
client: C,
}
#[cfg(feature = "native-client")]
impl Client<NativeClient> {
pub fn new() -> Self {
Self::with_client(NativeClient::new())
}
}
impl<C: HttpClient> Client<C> {
#[doc(hidden)]
#[allow(missing_doc_code_examples)]
pub fn with_client(client: C) -> Self {
let client = client;
Self { client }
}
pub fn get(&self, uri: impl AsRef<str>) -> Request<C> {
let uri = uri.as_ref().to_owned().parse().unwrap();
Request::with_client(http::Method::GET, uri, self.client.clone())
}
pub fn head(&self, uri: impl AsRef<str>) -> Request<C> {
let uri = uri.as_ref().to_owned().parse().unwrap();
Request::with_client(http::Method::HEAD, uri, self.client.clone())
}
pub fn post(&self, uri: impl AsRef<str>) -> Request<C> {
let uri = uri.as_ref().to_owned().parse().unwrap();
Request::with_client(http::Method::POST, uri, self.client.clone())
}
pub fn put(&self, uri: impl AsRef<str>) -> Request<C> {
let uri = uri.as_ref().to_owned().parse().unwrap();
Request::with_client(http::Method::PUT, uri, self.client.clone())
}
pub fn delete(&self, uri: impl AsRef<str>) -> Request<C> {
let uri = uri.as_ref().to_owned().parse().unwrap();
Request::with_client(http::Method::DELETE, uri, self.client.clone())
}
pub fn connect(&self, uri: impl AsRef<str>) -> Request<C> {
let uri = uri.as_ref().to_owned().parse().unwrap();
Request::with_client(http::Method::CONNECT, uri, self.client.clone())
}
pub fn options(&self, uri: impl AsRef<str>) -> Request<C> {
let uri = uri.as_ref().to_owned().parse().unwrap();
Request::with_client(http::Method::OPTIONS, uri, self.client.clone())
}
pub fn trace(&self, uri: impl AsRef<str>) -> Request<C> {
let uri = uri.as_ref().to_owned().parse().unwrap();
Request::with_client(http::Method::TRACE, uri, self.client.clone())
}
pub fn patch(&self, uri: impl AsRef<str>) -> Request<C> {
let uri = uri.as_ref().to_owned().parse().unwrap();
Request::with_client(http::Method::PATCH, uri, self.client.clone())
}
}