From d060891b62da7cc1dc0906d39e17a3f0b4d99c01 Mon Sep 17 00:00:00 2001 From: Sean McArthur Date: Wed, 15 Aug 2018 15:36:05 -0700 Subject: [PATCH] fix async request builder tests --- src/async_impl/request.rs | 18 ++++++++-------- src/client.rs | 6 +++--- src/request.rs | 45 +++++++++++++++++++-------------------- 3 files changed, 34 insertions(+), 35 deletions(-) diff --git a/src/async_impl/request.rs b/src/async_impl/request.rs index 73918cb..5953051 100644 --- a/src/async_impl/request.rs +++ b/src/async_impl/request.rs @@ -301,10 +301,10 @@ mod tests { fn add_query_append() { let client = Client::new(); let some_url = "https://google.com/"; - let mut r = client.get(some_url); + let r = client.get(some_url); - r.query(&[("foo", "bar")]); - r.query(&[("qux", 3)]); + let r = r.query(&[("foo", "bar")]); + let r = r.query(&[("qux", 3)]); let req = r.build().expect("request is valid"); assert_eq!(req.url().query(), Some("foo=bar&qux=3")); @@ -314,9 +314,9 @@ mod tests { fn add_query_append_same() { let client = Client::new(); 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"); assert_eq!(req.url().query(), Some("foo=a&foo=b")); @@ -332,11 +332,11 @@ mod tests { let client = Client::new(); 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 }; - r.query(¶ms); + let r = r.query(¶ms); let req = r.build().expect("request is valid"); assert_eq!(req.url().query(), Some("foo=bar&qux=3")); @@ -350,9 +350,9 @@ mod tests { let client = Client::new(); 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"); assert_eq!(req.url().query(), Some("foo=bar&qux=three")); diff --git a/src/client.rs b/src/client.rs index abbdf31..d42230b 100644 --- a/src/client.rs +++ b/src/client.rs @@ -6,7 +6,7 @@ use std::thread; use futures::{Future, Stream}; use futures::sync::{mpsc, oneshot}; -use request::{self, Request, RequestBuilder}; +use request::{Request, RequestBuilder}; use response::{self, Response}; use {async_impl, header, Certificate, Identity, Method, IntoUrl, Proxy, RedirectPolicy, wait}; @@ -359,7 +359,7 @@ impl Client { Ok(url) => Ok(Request::new(method, url)), Err(err) => Err(::error::from(err)), }; - request::builder(self.clone(), req) + RequestBuilder::new(self.clone(), req) } /// Executes a `Request`. @@ -476,7 +476,7 @@ impl ClientHandle { fn execute_request(&self, req: Request) -> ::Result { let (tx, rx) = oneshot::channel(); - let (req, body) = request::async(req); + let (req, body) = req.into_async(); let url = req.url().clone(); self.inner.tx .as_ref() diff --git a/src/request.rs b/src/request.rs index f0b04ac..d034a03 100644 --- a/src/request.rs +++ b/src/request.rs @@ -80,9 +80,31 @@ impl Request { pub fn body_mut(&mut self) -> &mut Option { &mut self.body } + + pub(crate) fn into_async(self) -> (async_impl::Request, Option) { + 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 { + pub(crate) fn new(client: Client, request: ::Result) -> RequestBuilder { + RequestBuilder { + client, + request, + } + } + /// Add a `Header` to this Request. /// /// ```rust @@ -433,29 +455,6 @@ fn fmt_request_fields<'a, 'b>(f: &'a mut fmt::DebugStruct<'a, 'b>, req: &Request .field("headers", req.headers()) } -// pub(crate) - -#[inline] -pub fn builder(client: Client, request: ::Result) -> RequestBuilder { - RequestBuilder { client, request } -} - -#[inline] -pub fn async(req: Request) -> (async_impl::Request, Option) { - 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)] mod tests { use {body, Client, Method};