Skip to content

v0.9.0

Compare
Choose a tag to compare
@seanmonstar seanmonstar released this 18 Sep 21:42
· 751 commits to master since this release

Features

  • Upgrade to tokio 0.1.
  • Upgrade to hyper 0.12.
  • Upgrade to native-tls 0.2.
  • Add ClientBuilder::danger_accept_invalid_certs(bool) to disable
    certificate verification.
  • Add RequestBuilder::bearer_auth(token) to ease sending bearer tokens.
  • Add headers() and headers_mut() to multipart::Part to allow sending
    extra headers for a specific part.
  • Moved request::unstable::async to reqwest::async.

Fixes

  • Fix panicking when passing a Url with a file:// scheme. Instead, an
    Error is returned.

Breaking Changes

  • Changed ClientBuilder::danger_disable_hostname_verification()
    to ClientBuilder::danger_accept_invalid_hostnames(bool).

  • Changed ClientBuilder to be a by-value builder instead of by-ref.

    For single chains of method calls, this shouldn't affect you. For code that
    conditionally uses the builder, this kind of change is needed:

    // Old
    let mut builder = ClientBuilder::new();
    if some_val {
        builder.gzip(false);
    }
    let client = builder.build()?;
    
    // New
    let mut builder = ClientBuilder::new();
    if some_val {
        builder = builder.gzip(false);
    }
    let client = builder.build()?;
  • Changed RequestBuilder to be a by-value builder of by-ref.

    See the previous note about ClientBuilder for affected code and
    how to change it.

  • Removed the unstable cargo-feature, and moved reqwest::unstable::async
    to reqwest::async.

  • Changed multipart::Part::mime() to mime_str().

    // Old
    let part = multipart::Part::file(path)?
        .mime(mime::TEXT_PLAIN);
    
    // New
    let part = multipart::Part::file(path)?
        .mime_str("text/plain")?;
  • The upgrade to hyper 0.12 means a temporary removal of the typed headers.

    The RequestBuilder has simple methods to set headers using strings, which
    can work in most places.

    // Old
    client
        .get("https://hyper.rs")
        .header(UserAgent::new("hallo"))
        .send()?;
    
    // New
    client
        .get("https://hyper.rs")
        .header("user-agent", "hallo")
        .send()?;

    To ease the transition, there is a hyper-011 cargo-feature that can be
    enabled.

    [dependencies]
    reqwest = { version = "0.9", features = ["hyper-011"] }

    And then usage:

    client
        .get("https://hyper.rs")
        .header_011(reqwest::hyper_011::header::UserAgent::new("hallo"))
        .send()?;