Newer
Older
use rocket::request::{FromRequest, Request};
use rocket::{Outcome, http};
use hyper::header::Headers;
#[derive(Debug)]
pub struct ConvertedHeaders {
pub inner: Headers,
}
impl ConvertedHeaders {
pub fn as_hyper(self) -> Headers { self.inner }
}
impl <'a, 'req>FromRequest<'a, 'req> for ConvertedHeaders {
type Error = ();
fn from_request(request: &'a Request<'req>) -> Outcome<Self, (http::Status, ()), ()> {
let mut hyper_headers = Headers::new();
let rocket_headers = request.headers().clone();
for header in rocket_headers.iter() {
let header_name = String::from(header.name());
hyper_headers.append_raw(header_name, String::from(header.value()).as_bytes().to_vec());
}
Outcome::Success(ConvertedHeaders {
inner: hyper_headers
})
}
}