use hyper_body_utils::HttpBody;
pub struct Request {
pub(crate) inner: Option<http::Request<HttpBody>>,
}
impl Request {
pub fn from_parts(parts: http::request::Parts, body: HttpBody) -> Self {
Self { inner: Some(http::Request::from_parts(parts, body)) }
}
pub fn uri(&self) -> &http::Uri {
match &self.inner {
Some(req) => req.uri(),
None => panic!("No request"),
}
}
pub fn headers(&self) -> &http::HeaderMap {
match &self.inner {
Some(req) => req.headers(),
None => panic!("No request"),
}
}
pub fn headers_mut(&mut self) -> &mut http::HeaderMap {
match &mut self.inner {
Some(req) => req.headers_mut(),
None => panic!("No request"),
}
}
pub fn method(&self) -> &http::Method {
match &self.inner {
Some(req) => req.method(),
None => panic!("No request"),
}
}
pub fn into_parts(self) -> (http::request::Parts, HttpBody) {
match self.inner {
Some(req) => {
let (parts, body) = req.into_parts();
(parts, body)
}
None => {
panic!("No request");
}
}
}
}