wip
This commit is contained in:
@@ -23,6 +23,33 @@ static DEFAULT_USER_AGENT: &'static str =
|
||||
concat!(env!("CARGO_PKG_NAME"), "/", env!("CARGO_PKG_VERSION"));
|
||||
|
||||
/// An asynchornous `Client` to make Requests with.
|
||||
///
|
||||
/// The Client has various configuration values to tweak, but the defaults
|
||||
/// are set to what is usually the most commonly desired value.
|
||||
///
|
||||
/// The `Client` holds a connection pool internally, so it is advised that
|
||||
/// you create one and **reuse** it.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```rust
|
||||
/// # #[cfg(features = "unstable")]
|
||||
/// # fn run() -> Result<(), Box<::std::error::Error>> {
|
||||
/// # extern crate tokio_core;
|
||||
/// # extern crate futures;
|
||||
/// use futures::Future;
|
||||
/// use tokio_core::reactor::Core;
|
||||
/// use reqwest::unstable::async::Client;
|
||||
///
|
||||
/// let mut core = Core::new()?;
|
||||
/// let client = Client::new(&core.handle());
|
||||
/// let fut = client.get("http://httpbin.org/").send();
|
||||
/// core.run(fut)?;
|
||||
/// # Ok(())
|
||||
/// # }
|
||||
/// # fn main() {}
|
||||
/// ```
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct Client {
|
||||
inner: Arc<ClientRef>,
|
||||
|
||||
@@ -51,27 +51,27 @@ impl Response {
|
||||
&mut self.headers
|
||||
}
|
||||
|
||||
/// Get a readable response body.
|
||||
///
|
||||
/// The response will be decoded.
|
||||
#[inline]
|
||||
pub fn body_mut(&mut self) -> &mut Decoder {
|
||||
&mut self.body
|
||||
}
|
||||
|
||||
/// Get a readable response body.
|
||||
///
|
||||
/// This function will replace the body on the response with an empty one.
|
||||
/// Get a reference to the response body.
|
||||
#[inline]
|
||||
pub fn body(&self) -> &Decoder {
|
||||
&self.body
|
||||
}
|
||||
|
||||
/// Get a mutable reference to the response body.
|
||||
///
|
||||
/// The chunks from the body may be decoded, depending on the `gzip`
|
||||
/// option on the `ClientBuilder`.
|
||||
#[inline]
|
||||
pub fn body_mut(&mut self) -> &mut Decoder {
|
||||
&mut self.body
|
||||
}
|
||||
|
||||
|
||||
/// Try to deserialize the response body as JSON using `serde`.
|
||||
#[inline]
|
||||
pub fn json<T: DeserializeOwned>(&mut self) -> Json<T> {
|
||||
let body = mem::replace(&mut self.body, Decoder::empty());
|
||||
|
||||
|
||||
Json {
|
||||
concat: body.concat2(),
|
||||
_marker: PhantomData,
|
||||
@@ -79,28 +79,28 @@ impl Response {
|
||||
}
|
||||
|
||||
/// Turn a response into an error if the server returned an error.
|
||||
// XXX: example disabled since rustdoc still tries to run it
|
||||
// when the 'unstable' feature isn't active, making the import
|
||||
// fail.
|
||||
//
|
||||
// # Example
|
||||
//
|
||||
// ```
|
||||
// # use reqwest::unstable::async::Response;
|
||||
// fn on_response(res: Response) {
|
||||
// match res.error_for_status() {
|
||||
// Ok(_res) => (),
|
||||
// Err(err) => {
|
||||
// // asserting a 400 as an example
|
||||
// // it could be any status between 400...599
|
||||
// assert_eq!(
|
||||
// err.status(),
|
||||
// Some(reqwest::StatusCode::BadRequest)
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// ```
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// # #[cfg(feature="unstable")]
|
||||
/// # use reqwest::unstable::async::Response;
|
||||
/// # #[cfg(feature="unstable")]
|
||||
/// fn on_response(res: Response) {
|
||||
/// match res.error_for_status() {
|
||||
/// Ok(_res) => (),
|
||||
/// Err(err) => {
|
||||
/// // asserting a 400 as an example
|
||||
/// // it could be any status between 400...599
|
||||
/// assert_eq!(
|
||||
/// err.status(),
|
||||
/// Some(reqwest::StatusCode::BadRequest)
|
||||
/// );
|
||||
/// }
|
||||
/// }
|
||||
/// }
|
||||
/// # fn main() {}
|
||||
/// ```
|
||||
#[inline]
|
||||
pub fn error_for_status(self) -> ::Result<Self> {
|
||||
if self.status.is_client_error() {
|
||||
|
||||
Reference in New Issue
Block a user