#![allow(clippy::unsafe_derive_deserialize)]
mod config;
mod error;
mod expect;
mod request;
mod request_builder;
mod response;
mod body;
pub mod client;
pub mod command;
#[cfg(feature = "http-types")]
mod compat;
pub mod middleware;
pub mod protocol;
pub mod testing;
use std::marker::PhantomData;
pub use crate::body::Body;
pub use http;
pub use http::Method;
pub use mime;
pub use url::Url;
#[cfg(feature = "http-types")]
pub use http_types;
pub use crate::protocol::{HttpRequest, HttpResponse};
pub use self::{config::Config, error::HttpError, request::Request};
pub use response::Response;
pub use request_builder::RequestBuilder;
pub use response::RawResponse;
use client::Client;
pub type Result<T> = std::result::Result<T, HttpError>;
pub struct Http<Effect, Event> {
effect: PhantomData<Effect>,
event: PhantomData<Event>,
}
impl<Effect, Event> Http<Effect, Event>
where
Effect: Send + From<crux_core::Request<HttpRequest>> + 'static,
Event: Send + 'static,
{
pub fn get(url: impl AsRef<str>) -> command::RequestBuilder<Effect, Event> {
command::RequestBuilder::new(Method::GET, url.as_ref().parse().unwrap())
}
pub fn head(url: impl AsRef<str>) -> command::RequestBuilder<Effect, Event> {
command::RequestBuilder::new(Method::HEAD, url.as_ref().parse().unwrap())
}
pub fn post(url: impl AsRef<str>) -> command::RequestBuilder<Effect, Event> {
command::RequestBuilder::new(Method::POST, url.as_ref().parse().unwrap())
}
pub fn put(url: impl AsRef<str>) -> command::RequestBuilder<Effect, Event> {
command::RequestBuilder::new(Method::PUT, url.as_ref().parse().unwrap())
}
pub fn delete(url: impl AsRef<str>) -> command::RequestBuilder<Effect, Event> {
command::RequestBuilder::new(Method::DELETE, url.as_ref().parse().unwrap())
}
pub fn patch(url: impl AsRef<str>) -> command::RequestBuilder<Effect, Event> {
command::RequestBuilder::new(Method::PATCH, url.as_ref().parse().unwrap())
}
pub fn options(url: impl AsRef<str>) -> command::RequestBuilder<Effect, Event> {
command::RequestBuilder::new(Method::OPTIONS, url.as_ref().parse().unwrap())
}
pub fn trace(url: impl AsRef<str>) -> command::RequestBuilder<Effect, Event> {
command::RequestBuilder::new(Method::TRACE, url.as_ref().parse().unwrap())
}
pub fn connect(url: impl AsRef<str>) -> command::RequestBuilder<Effect, Event> {
command::RequestBuilder::new(Method::CONNECT, url.as_ref().parse().unwrap())
}
pub fn request(method: Method, url: Url) -> command::RequestBuilder<Effect, Event> {
command::RequestBuilder::new(method, url)
}
}