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