fix async request builder tests
This commit is contained in:
		| @@ -301,10 +301,10 @@ mod tests { | |||||||
|     fn add_query_append() { |     fn add_query_append() { | ||||||
|         let client = Client::new(); |         let client = Client::new(); | ||||||
|         let some_url = "https://google.com/"; |         let some_url = "https://google.com/"; | ||||||
|         let mut r = client.get(some_url); |         let r = client.get(some_url); | ||||||
|  |  | ||||||
|         r.query(&[("foo", "bar")]); |         let r = r.query(&[("foo", "bar")]); | ||||||
|         r.query(&[("qux", 3)]); |         let r = r.query(&[("qux", 3)]); | ||||||
|  |  | ||||||
|         let req = r.build().expect("request is valid"); |         let req = r.build().expect("request is valid"); | ||||||
|         assert_eq!(req.url().query(), Some("foo=bar&qux=3")); |         assert_eq!(req.url().query(), Some("foo=bar&qux=3")); | ||||||
| @@ -314,9 +314,9 @@ mod tests { | |||||||
|     fn add_query_append_same() { |     fn add_query_append_same() { | ||||||
|         let client = Client::new(); |         let client = Client::new(); | ||||||
|         let some_url = "https://google.com/"; |         let some_url = "https://google.com/"; | ||||||
|         let mut r = client.get(some_url); |         let r = client.get(some_url); | ||||||
|  |  | ||||||
|         r.query(&[("foo", "a"), ("foo", "b")]); |         let r = r.query(&[("foo", "a"), ("foo", "b")]); | ||||||
|  |  | ||||||
|         let req = r.build().expect("request is valid"); |         let req = r.build().expect("request is valid"); | ||||||
|         assert_eq!(req.url().query(), Some("foo=a&foo=b")); |         assert_eq!(req.url().query(), Some("foo=a&foo=b")); | ||||||
| @@ -332,11 +332,11 @@ mod tests { | |||||||
|  |  | ||||||
|         let client = Client::new(); |         let client = Client::new(); | ||||||
|         let some_url = "https://google.com/"; |         let some_url = "https://google.com/"; | ||||||
|         let mut r = client.get(some_url); |         let r = client.get(some_url); | ||||||
|  |  | ||||||
|         let params = Params { foo: "bar".into(), qux: 3 }; |         let params = Params { foo: "bar".into(), qux: 3 }; | ||||||
|  |  | ||||||
|         r.query(¶ms); |         let r = r.query(¶ms); | ||||||
|  |  | ||||||
|         let req = r.build().expect("request is valid"); |         let req = r.build().expect("request is valid"); | ||||||
|         assert_eq!(req.url().query(), Some("foo=bar&qux=3")); |         assert_eq!(req.url().query(), Some("foo=bar&qux=3")); | ||||||
| @@ -350,9 +350,9 @@ mod tests { | |||||||
|  |  | ||||||
|         let client = Client::new(); |         let client = Client::new(); | ||||||
|         let some_url = "https://google.com/"; |         let some_url = "https://google.com/"; | ||||||
|         let mut r = client.get(some_url); |         let r = client.get(some_url); | ||||||
|  |  | ||||||
|         r.query(¶ms); |         let r = r.query(¶ms); | ||||||
|  |  | ||||||
|         let req = r.build().expect("request is valid"); |         let req = r.build().expect("request is valid"); | ||||||
|         assert_eq!(req.url().query(), Some("foo=bar&qux=three")); |         assert_eq!(req.url().query(), Some("foo=bar&qux=three")); | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ use std::thread; | |||||||
| use futures::{Future, Stream}; | use futures::{Future, Stream}; | ||||||
| use futures::sync::{mpsc, oneshot}; | use futures::sync::{mpsc, oneshot}; | ||||||
|  |  | ||||||
| use request::{self, Request, RequestBuilder}; | use request::{Request, RequestBuilder}; | ||||||
| use response::{self, Response}; | use response::{self, Response}; | ||||||
| use {async_impl, header, Certificate, Identity, Method, IntoUrl, Proxy, RedirectPolicy, wait}; | use {async_impl, header, Certificate, Identity, Method, IntoUrl, Proxy, RedirectPolicy, wait}; | ||||||
|  |  | ||||||
| @@ -359,7 +359,7 @@ impl Client { | |||||||
|             Ok(url) => Ok(Request::new(method, url)), |             Ok(url) => Ok(Request::new(method, url)), | ||||||
|             Err(err) => Err(::error::from(err)), |             Err(err) => Err(::error::from(err)), | ||||||
|         }; |         }; | ||||||
|         request::builder(self.clone(), req) |         RequestBuilder::new(self.clone(), req) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /// Executes a `Request`. |     /// Executes a `Request`. | ||||||
| @@ -476,7 +476,7 @@ impl ClientHandle { | |||||||
|  |  | ||||||
|     fn execute_request(&self, req: Request) -> ::Result<Response> { |     fn execute_request(&self, req: Request) -> ::Result<Response> { | ||||||
|         let (tx, rx) = oneshot::channel(); |         let (tx, rx) = oneshot::channel(); | ||||||
|         let (req, body) = request::async(req); |         let (req, body) = req.into_async(); | ||||||
|         let url = req.url().clone(); |         let url = req.url().clone(); | ||||||
|         self.inner.tx |         self.inner.tx | ||||||
|             .as_ref() |             .as_ref() | ||||||
|   | |||||||
| @@ -80,9 +80,31 @@ impl Request { | |||||||
|     pub fn body_mut(&mut self) -> &mut Option<Body> { |     pub fn body_mut(&mut self) -> &mut Option<Body> { | ||||||
|         &mut self.body |         &mut self.body | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     pub(crate) fn into_async(self) -> (async_impl::Request, Option<body::Sender>) { | ||||||
|  |         use header::CONTENT_LENGTH; | ||||||
|  |  | ||||||
|  |         let mut req_async = self.inner; | ||||||
|  |         let body = self.body.and_then(|body| { | ||||||
|  |             let (tx, body, len) = body::async(body); | ||||||
|  |             if let Some(len) = len { | ||||||
|  |                 req_async.headers_mut().insert(CONTENT_LENGTH, HeaderValue::from_str(len.to_string().as_str()).expect("")); | ||||||
|  |             } | ||||||
|  |             *req_async.body_mut() = Some(body); | ||||||
|  |             tx | ||||||
|  |         }); | ||||||
|  |         (req_async, body) | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| impl RequestBuilder { | impl RequestBuilder { | ||||||
|  |     pub(crate) fn new(client: Client, request: ::Result<Request>) -> RequestBuilder { | ||||||
|  |         RequestBuilder { | ||||||
|  |             client, | ||||||
|  |             request, | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /// Add a `Header` to this Request. |     /// Add a `Header` to this Request. | ||||||
|     /// |     /// | ||||||
|     /// ```rust |     /// ```rust | ||||||
| @@ -433,29 +455,6 @@ fn fmt_request_fields<'a, 'b>(f: &'a mut fmt::DebugStruct<'a, 'b>, req: &Request | |||||||
|         .field("headers", req.headers()) |         .field("headers", req.headers()) | ||||||
| } | } | ||||||
|  |  | ||||||
| // pub(crate) |  | ||||||
|  |  | ||||||
| #[inline] |  | ||||||
| pub fn builder(client: Client, request: ::Result<Request>) -> RequestBuilder { |  | ||||||
|     RequestBuilder { client, request } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| #[inline] |  | ||||||
| pub fn async(req: Request) -> (async_impl::Request, Option<body::Sender>) { |  | ||||||
|     use header::CONTENT_LENGTH; |  | ||||||
|  |  | ||||||
|     let mut req_async = req.inner; |  | ||||||
|     let body = req.body.and_then(|body| { |  | ||||||
|         let (tx, body, len) = body::async(body); |  | ||||||
|         if let Some(len) = len { |  | ||||||
|             req_async.headers_mut().insert(CONTENT_LENGTH, HeaderValue::from_str(len.to_string().as_str()).expect("")); |  | ||||||
|         } |  | ||||||
|         *req_async.body_mut() = Some(body); |  | ||||||
|         tx |  | ||||||
|     }); |  | ||||||
|     (req_async, body) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| #[cfg(test)] | #[cfg(test)] | ||||||
| mod tests { | mod tests { | ||||||
|     use {body, Client, Method}; |     use {body, Client, Method}; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user