update doc examples
- Make examples runnable for doc tests - Add error handling using `?` instead of `unwrap`
This commit is contained in:
@@ -31,7 +31,7 @@ static DEFAULT_USER_AGENT: &'static str = concat!(env!("CARGO_PKG_NAME"), "/", e
|
|||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```rust
|
||||||
/// # use reqwest::{Error, Client};
|
/// # use reqwest::{Error, Client};
|
||||||
/// #
|
/// #
|
||||||
/// # fn run() -> Result<(), Error> {
|
/// # fn run() -> Result<(), Error> {
|
||||||
@@ -182,13 +182,18 @@ pub struct RequestBuilder {
|
|||||||
impl RequestBuilder {
|
impl RequestBuilder {
|
||||||
/// Add a `Header` to this Request.
|
/// Add a `Header` to this Request.
|
||||||
///
|
///
|
||||||
/// ```no_run
|
/// ```rust
|
||||||
|
/// # use reqwest::Error;
|
||||||
|
/// #
|
||||||
|
/// # fn run() -> Result<(), Error> {
|
||||||
/// use reqwest::header::UserAgent;
|
/// use reqwest::header::UserAgent;
|
||||||
/// let client = reqwest::Client::new().expect("client failed to construct");
|
/// let client = reqwest::Client::new()?;
|
||||||
///
|
///
|
||||||
/// let res = client.get("https://www.rust-lang.org")
|
/// let res = client.get("https://www.rust-lang.org")
|
||||||
/// .header(UserAgent("foo".to_string()))
|
/// .header(UserAgent("foo".to_string()))
|
||||||
/// .send();
|
/// .send()?;
|
||||||
|
/// # Ok(())
|
||||||
|
/// # }
|
||||||
/// ```
|
/// ```
|
||||||
pub fn header<H: ::header::Header + ::header::HeaderFormat>(mut self, header: H) -> RequestBuilder {
|
pub fn header<H: ::header::Header + ::header::HeaderFormat>(mut self, header: H) -> RequestBuilder {
|
||||||
self.headers.set(header);
|
self.headers.set(header);
|
||||||
@@ -222,15 +227,20 @@ impl RequestBuilder {
|
|||||||
/// and also sets the `Content-Type: application/www-form-url-encoded`
|
/// and also sets the `Content-Type: application/www-form-url-encoded`
|
||||||
/// header.
|
/// header.
|
||||||
///
|
///
|
||||||
/// ```no_run
|
/// ```rust
|
||||||
|
/// # use reqwest::Error;
|
||||||
/// # use std::collections::HashMap;
|
/// # use std::collections::HashMap;
|
||||||
|
/// #
|
||||||
|
/// # fn run() -> Result<(), Error> {
|
||||||
/// let mut params = HashMap::new();
|
/// let mut params = HashMap::new();
|
||||||
/// params.insert("lang", "rust");
|
/// params.insert("lang", "rust");
|
||||||
///
|
///
|
||||||
/// let client = reqwest::Client::new().unwrap();
|
/// let client = reqwest::Client::new()?;
|
||||||
/// let res = client.post("http://httpbin.org")
|
/// let res = client.post("http://httpbin.org")
|
||||||
/// .form(¶ms)
|
/// .form(¶ms)
|
||||||
/// .send();
|
/// .send()?;
|
||||||
|
/// # Ok(())
|
||||||
|
/// # }
|
||||||
/// ```
|
/// ```
|
||||||
pub fn form<T: Serialize>(mut self, form: &T) -> RequestBuilder {
|
pub fn form<T: Serialize>(mut self, form: &T) -> RequestBuilder {
|
||||||
let body = serde_urlencoded::to_string(form).map_err(::error::from);
|
let body = serde_urlencoded::to_string(form).map_err(::error::from);
|
||||||
@@ -244,15 +254,20 @@ impl RequestBuilder {
|
|||||||
/// Sets the body to the JSON serialization of the passed value, and
|
/// Sets the body to the JSON serialization of the passed value, and
|
||||||
/// also sets the `Content-Type: application/json` header.
|
/// also sets the `Content-Type: application/json` header.
|
||||||
///
|
///
|
||||||
/// ```no_run
|
/// ```rust
|
||||||
|
/// # use reqwest::Error;
|
||||||
/// # use std::collections::HashMap;
|
/// # use std::collections::HashMap;
|
||||||
|
/// #
|
||||||
|
/// # fn run() -> Result<(), Error> {
|
||||||
/// let mut map = HashMap::new();
|
/// let mut map = HashMap::new();
|
||||||
/// map.insert("lang", "rust");
|
/// map.insert("lang", "rust");
|
||||||
///
|
///
|
||||||
/// let client = reqwest::Client::new().unwrap();
|
/// let client = reqwest::Client::new()?;
|
||||||
/// let res = client.post("http://httpbin.org")
|
/// let res = client.post("http://httpbin.org")
|
||||||
/// .json(&map)
|
/// .json(&map)
|
||||||
/// .send();
|
/// .send()?;
|
||||||
|
/// # Ok(())
|
||||||
|
/// # }
|
||||||
/// ```
|
/// ```
|
||||||
pub fn json<T: Serialize>(mut self, json: &T) -> RequestBuilder {
|
pub fn json<T: Serialize>(mut self, json: &T) -> RequestBuilder {
|
||||||
let body = serde_json::to_vec(json).expect("serde to_vec cannot fail");
|
let body = serde_json::to_vec(json).expect("serde to_vec cannot fail");
|
||||||
|
|||||||
58
src/lib.rs
58
src/lib.rs
@@ -49,11 +49,16 @@
|
|||||||
//! including `String`, `Vec<u8>`, and `File`. If you wish to pass a custom
|
//! including `String`, `Vec<u8>`, and `File`. If you wish to pass a custom
|
||||||
//! Reader, you can use the `reqwest::Body::new()` constructor.
|
//! Reader, you can use the `reqwest::Body::new()` constructor.
|
||||||
//!
|
//!
|
||||||
//! ```no_run
|
//! ```rust
|
||||||
//! let client = reqwest::Client::new().unwrap();
|
//! # use reqwest::Error;
|
||||||
|
//! #
|
||||||
|
//! # fn run() -> Result<(), Error> {
|
||||||
|
//! let client = reqwest::Client::new()?;
|
||||||
//! let res = client.post("http://httpbin.org/post")
|
//! let res = client.post("http://httpbin.org/post")
|
||||||
//! .body("the exact body that is sent")
|
//! .body("the exact body that is sent")
|
||||||
//! .send();
|
//! .send()?;
|
||||||
|
//! # Ok(())
|
||||||
|
//! # }
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! ### Forms
|
//! ### Forms
|
||||||
@@ -64,13 +69,18 @@
|
|||||||
//! This can be an array of tuples, or a `HashMap`, or a custom type that
|
//! This can be an array of tuples, or a `HashMap`, or a custom type that
|
||||||
//! implements [`Serialize`][serde].
|
//! implements [`Serialize`][serde].
|
||||||
//!
|
//!
|
||||||
//! ```no_run
|
//! ```rust
|
||||||
|
//! # use reqwest::Error;
|
||||||
|
//! #
|
||||||
|
//! # fn run() -> Result<(), Error> {
|
||||||
//! // This will POST a body of `foo=bar&baz=quux`
|
//! // This will POST a body of `foo=bar&baz=quux`
|
||||||
//! let params = [("foo", "bar"), ("baz", "quux")];
|
//! let params = [("foo", "bar"), ("baz", "quux")];
|
||||||
//! let client = reqwest::Client::new().unwrap();
|
//! let client = reqwest::Client::new()?;
|
||||||
//! let res = client.post("http://httpbin.org/post")
|
//! let res = client.post("http://httpbin.org/post")
|
||||||
//! .form(¶ms)
|
//! .form(¶ms)
|
||||||
//! .send();
|
//! .send()?;
|
||||||
|
//! # Ok(())
|
||||||
|
//! # }
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! ### JSON
|
//! ### JSON
|
||||||
@@ -79,17 +89,22 @@
|
|||||||
//! a similar fashion the `form` method. It can take any value that can be
|
//! a similar fashion the `form` method. It can take any value that can be
|
||||||
//! serialized into JSON.
|
//! serialized into JSON.
|
||||||
//!
|
//!
|
||||||
//! ```no_run
|
//! ```rust
|
||||||
|
//! # use reqwest::Error;
|
||||||
//! # use std::collections::HashMap;
|
//! # use std::collections::HashMap;
|
||||||
|
//! #
|
||||||
|
//! # fn run() -> Result<(), Error> {
|
||||||
//! // This will POST a body of `{"lang":"rust","body":"json"}`
|
//! // This will POST a body of `{"lang":"rust","body":"json"}`
|
||||||
//! let mut map = HashMap::new();
|
//! let mut map = HashMap::new();
|
||||||
//! map.insert("lang", "rust");
|
//! map.insert("lang", "rust");
|
||||||
//! map.insert("body", "json");
|
//! map.insert("body", "json");
|
||||||
//!
|
//!
|
||||||
//! let client = reqwest::Client::new().unwrap();
|
//! let client = reqwest::Client::new()?;
|
||||||
//! let res = client.post("http://httpbin.org/post")
|
//! let res = client.post("http://httpbin.org/post")
|
||||||
//! .json(&map)
|
//! .json(&map)
|
||||||
//! .send();
|
//! .send()?;
|
||||||
|
//! # Ok(())
|
||||||
|
//! # }
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! [hyper]: http://hyper.rs
|
//! [hyper]: http://hyper.rs
|
||||||
@@ -159,12 +174,31 @@ mod response;
|
|||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
/// ```no_run
|
/// ```rust
|
||||||
|
/// # extern crate reqwest;
|
||||||
|
/// # #[macro_use] extern crate error_chain;
|
||||||
|
/// #
|
||||||
/// use std::io::Read;
|
/// use std::io::Read;
|
||||||
///
|
///
|
||||||
|
/// # error_chain! {
|
||||||
|
/// # foreign_links {
|
||||||
|
/// # Reqwest(reqwest::Error);
|
||||||
|
/// # Io(std::io::Error);
|
||||||
|
/// # }
|
||||||
|
/// # }
|
||||||
|
/// #
|
||||||
|
/// # fn run() -> Result<()> {
|
||||||
/// let mut result = String::new();
|
/// let mut result = String::new();
|
||||||
/// reqwest::get("https://www.rust-lang.org").unwrap()
|
/// reqwest::get("https://www.rust-lang.org")?
|
||||||
/// .read_to_string(&mut result);
|
/// .read_to_string(&mut result)?;
|
||||||
|
/// # Ok(())
|
||||||
|
/// # }
|
||||||
|
/// #
|
||||||
|
/// # fn main() {
|
||||||
|
/// # if let Err(error) = run() {
|
||||||
|
/// # println!("Error: {:?}", error);
|
||||||
|
/// # }
|
||||||
|
/// # }
|
||||||
/// ```
|
/// ```
|
||||||
pub fn get<T: IntoUrl>(url: T) -> ::Result<Response> {
|
pub fn get<T: IntoUrl>(url: T) -> ::Result<Response> {
|
||||||
let client = try!(Client::new());
|
let client = try!(Client::new());
|
||||||
|
|||||||
@@ -58,9 +58,11 @@ impl RedirectPolicy {
|
|||||||
///
|
///
|
||||||
/// # Example
|
/// # Example
|
||||||
///
|
///
|
||||||
/// ```no_run
|
/// ```rust
|
||||||
/// # use reqwest::RedirectPolicy;
|
/// # use reqwest::{Error, RedirectPolicy};
|
||||||
/// # let mut client = reqwest::Client::new().unwrap();
|
/// #
|
||||||
|
/// # fn run() -> Result<(), Error> {
|
||||||
|
/// let mut client = reqwest::Client::new()?;
|
||||||
/// client.redirect(RedirectPolicy::custom(|attempt| {
|
/// client.redirect(RedirectPolicy::custom(|attempt| {
|
||||||
/// if attempt.previous().len() > 5 {
|
/// if attempt.previous().len() > 5 {
|
||||||
/// attempt.too_many_redirects()
|
/// attempt.too_many_redirects()
|
||||||
@@ -71,6 +73,8 @@ impl RedirectPolicy {
|
|||||||
/// attempt.follow()
|
/// attempt.follow()
|
||||||
/// }
|
/// }
|
||||||
/// }));
|
/// }));
|
||||||
|
/// # Ok(())
|
||||||
|
/// # }
|
||||||
/// ```
|
/// ```
|
||||||
pub fn custom<T>(policy: T) -> RedirectPolicy
|
pub fn custom<T>(policy: T) -> RedirectPolicy
|
||||||
where T: Fn(RedirectAttempt) -> RedirectAction + Send + Sync + 'static {
|
where T: Fn(RedirectAttempt) -> RedirectAction + Send + Sync + 'static {
|
||||||
|
|||||||
@@ -87,27 +87,31 @@ impl Response {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Try and deserialize the response body as JSON.
|
/// Try and deserialize the response body as JSON using `serde`.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
/// ```rust,no_run
|
/// ```rust
|
||||||
/// extern crate reqwest;
|
/// # extern crate reqwest;
|
||||||
/// #[macro_use]
|
/// # #[macro_use] extern crate serde_derive;
|
||||||
/// extern crate serde_derive;
|
/// #
|
||||||
///
|
/// # use reqwest::Error;
|
||||||
|
/// #
|
||||||
/// #[derive(Deserialize)]
|
/// #[derive(Deserialize)]
|
||||||
/// struct User {
|
/// struct Response {
|
||||||
/// name: String,
|
/// origin: String,
|
||||||
/// age: u8,
|
|
||||||
/// }
|
/// }
|
||||||
///
|
///
|
||||||
/// fn main() {
|
/// # fn run() -> Result<(), Error> {
|
||||||
/// let user: User = reqwest::get("http://127.0.0.1/user.json")
|
/// let resp: Response = reqwest::get("http://127.0.0.1/user.json")?.json()?;
|
||||||
/// .expect("network error")
|
/// # Ok(())
|
||||||
/// .json()
|
/// # }
|
||||||
/// .expect("malformed json");
|
/// #
|
||||||
/// }
|
/// # fn main() {
|
||||||
|
/// # if let Err(error) = run() {
|
||||||
|
/// # println!("Error: {:?}", error);
|
||||||
|
/// # }
|
||||||
|
/// # }
|
||||||
/// ```
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn json<T: DeserializeOwned>(&mut self) -> ::Result<T> {
|
pub fn json<T: DeserializeOwned>(&mut self) -> ::Result<T> {
|
||||||
|
|||||||
Reference in New Issue
Block a user