pub extern crate nickel;
use self::nickel::hyper;
use self::hyper::header::ContentType;
pub use self::nickel::Request as NickelRequest;
pub use self::nickel::hyper::server::Request as HyperRequest;
use server::{HttpRequest, Multipart};
pub struct Maybe<'r, 'mw: 'r, 'server: 'mw, D: 'mw>(pub &'r mut NickelRequest<'mw, 'server, D>);
impl<'r, 'mw: 'r, 'server: 'mw, D: 'mw> HttpRequest for Maybe<'r, 'mw, 'server, D> {
type Body = &'r mut HyperRequest<'mw, 'server>;
fn multipart_boundary(&self) -> Option<&str> {
let cont_type = try_opt!(self.0.origin.headers.get::<ContentType>());
cont_type.get_param("boundary").map(|v| v.as_str())
}
fn body(self) -> Self::Body {
&mut self.0.origin
}
}
pub trait MultipartBody<'mw, 'server> {
fn multipart_body(&mut self) -> Option<Multipart<&mut HyperRequest<'mw, 'server>>>;
}
impl<'mw, 'server, D: 'mw> MultipartBody<'mw, 'server> for NickelRequest<'mw, 'server, D> {
fn multipart_body(&mut self) -> Option<Multipart<&mut HyperRequest<'mw, 'server>>> {
Multipart::from_request(Maybe(self)).ok()
}
}
impl<'r, 'mw: 'r, 'server: 'mw, D: 'mw> AsRef<&'r mut NickelRequest<'mw, 'server, D>> for Maybe<'r, 'mw, 'server, D> {
fn as_ref(&self) -> &&'r mut NickelRequest<'mw, 'server, D> {
&self.0
}
}
impl<'r, 'mw: 'r, 'server: 'mw, D: 'mw> AsMut<&'r mut NickelRequest<'mw, 'server, D>> for Maybe<'r, 'mw, 'server, D> {
fn as_mut(&mut self) -> &mut &'r mut NickelRequest<'mw, 'server, D> {
&mut self.0
}
}
impl<'r, 'mw: 'r, 'server: 'mw, D: 'mw> Into<&'r mut NickelRequest<'mw, 'server, D>> for Maybe<'r, 'mw, 'server, D> {
fn into(self) -> &'r mut NickelRequest<'mw, 'server, D> {
self.0
}
}
impl<'r, 'mw: 'r, 'server: 'mw, D: 'mw> From<&'r mut NickelRequest<'mw, 'server, D>> for Maybe<'r, 'mw, 'server, D> {
fn from(req: &'r mut NickelRequest<'mw, 'server, D>) -> Self {
Maybe(req)
}
}