diff --git a/lib/src/request/data.rs b/lib/src/request/data.rs index 012eed93..e768225c 100644 --- a/lib/src/request/data.rs +++ b/lib/src/request/data.rs @@ -1,8 +1,8 @@ use std::io::{BufRead, Read, Cursor, BufReader}; pub struct Data { + buffer: Vec, stream: Cursor>, - buffer: Vec } impl Data { diff --git a/lib/src/request/request.rs b/lib/src/request/request.rs index d07fab40..66450b54 100644 --- a/lib/src/request/request.rs +++ b/lib/src/request/request.rs @@ -1,4 +1,3 @@ -use std::io::Read; use std::cell::RefCell; use std::fmt; @@ -10,7 +9,7 @@ use super::{FromParam, FromSegments}; use router::Route; use http::uri::{URI, URIBuf}; -use http::hyper::{header, HyperCookie, HyperHeaders, HyperRequest, HyperRequestUri}; +use http::hyper::{header, HyperCookie, HyperHeaders, HyperMethod, HyperRequestUri}; use http::{Method, ContentType, Cookies}; /// The type for all incoming web requests. @@ -186,38 +185,33 @@ impl Request { self.headers.set::(hyper_ct) } - /// Create a Rocket Request from a Hyper Request. #[doc(hidden)] - pub fn from_hyp<'h, 'k>(hyper_req: HyperRequest<'h, 'k>) - -> Result { - let (_, h_method, h_headers, h_uri, _, mut h_body) = hyper_req.deconstruct(); - + pub fn new(h_method: HyperMethod, + h_headers: HyperHeaders, + h_uri: HyperRequestUri) + -> Result { let uri = match h_uri { HyperRequestUri::AbsolutePath(s) => URIBuf::from(s), _ => return Err(format!("Bad URI: {}", h_uri)), }; let method = match Method::from_hyp(&h_method) { - Some(m) => m, + Some(method) => method, _ => return Err(format!("Bad method: {}", h_method)), }; let cookies = match h_headers.get::() { - // TODO: What to do about key? + // TODO: Retrieve key from config. Some(cookie) => cookie.to_cookie_jar(&[]), None => Cookies::new(&[]), }; - // FIXME: GRRR. - let mut data = vec![]; - h_body.read_to_end(&mut data).unwrap(); - let request = Request { params: RefCell::new(vec![]), method: method, cookies: cookies, uri: uri, - data: data, + data: vec![], // TODO: Remove me. headers: h_headers, }; diff --git a/lib/src/rocket.rs b/lib/src/rocket.rs index 80adbf7b..ee471969 100644 --- a/lib/src/rocket.rs +++ b/lib/src/rocket.rs @@ -44,8 +44,11 @@ impl Rocket { // Get a copy of the URI for later use. let uri = hyp_req.uri.to_string(); - // Try to create a Rocket request from the hyper request. - let request = match Request::from_hyp(hyp_req) { + // Get all of the information from Hyper. + let (_, h_method, h_headers, h_uri, _, mut _body) = hyp_req.deconstruct(); + + // Try to create a Rocket request from the hyper request info. + let request = match Request::new(h_method, h_headers, h_uri) { Ok(mut req) => { self.preprocess_request(&mut req); req