# 2.0.0-rc3 * Refactor Error to use an enum for easier extraction of status code errors. * Remove error_on_non_2xx in favor of the new Error style. * (Internal) Use BufRead::read_line when reading headers. # 2.0.0-rc2 * Remove the "synthetic error" concept. Methods that formerly returned Response now return Result. * Rewrite Error type. Instead of an enum, it's now a struct with an ErrorKind. This allows us to store the source error when appropriate, as well as the URL that caused an error. * Move more configuration to Agent. Timeouts, TLS config, and proxy config now require building an Agent. * Create AgentBuilder to separate the process of building an agent from using the resulting agent. Headers can be set on an AgentBuilder, not the resulting Agent. * Agent is cheaply cloneable with an internal Arc. This makes it easy to share a single agent throughout your program. * There is now a default timeout_connect of 30 seconds. Read and write timeouts continue to be unset by default. * Add ureq::request_url and Agent::request_url, to send requests with already-parsed URLs. * Remove native_tls support. * Remove convenience methods `options(url)`, `trace(url)`, and `patch(url)`. To send requests with those verbs use `request(method, url)`. * Remove Request::build. This was a workaround because some of Request's methods took `&mut self` instead of `mut self`, and is no longer needed. You can simply delete any calls to `Request::build`. * Remove Agent::set_cookie. * Remove Header from the public API. The type wasn't used by any public methods. * Remove basic auth support. The API was incomplete. We may add back something better in the future. * Remove into_json_deserialize. Now into_json handles both serde_json::Value and other types that implement serde::Deserialize. If you were using serde_json before, you will probably have to explicitly annotate a type, like: `let v: serde_json::Value = response.into_json();`. * Rewrite README and top-level documentation. # 1.5.2 * Remove 'static constraint on Request.send(), allowing a wider variety of types to be passed. Also eliminate some copying. (#205). * Allow turning a Response into an Error (#214). * Update env_logger to 0.8.1 (#195). * Remove convenience method for CONNECT verb (#177). * Fix bugs in handling of timeout_read (#197 and #198). # 1.5.1 * Use cookie_store crate for correct cookie handling (#169). * Fix bug in picking wrong host for redirects introduced in 1.5.0 (#180). * Allow proxy settings on Agent (#178). # 1.5.0 * Add pluggable name resolution. Users can now override the IP addresses for hostnames of their choice (#148). * bugfix: Don't re-pool streams on drop. This would occur if the user called `response.into_reader()` and dropped the resulting `Read` before reading all the way to EOF. The result would be a BadStatus error on the next request to the same hostname. This only affected users using an explicit Agent (#160). * Automatically set Transfer-Encoding: chunked when using `send` (#86). * `into_reader()` now returns `impl Read + Send` instead of `impl Read` (#156). * Add support for log crate (#170). * Retry broken connections in more cases (should reduce BadStatus errors; #168). # 1.4.1 * Use buffer to avoid byte-by-byte parsing result in multiple syscalls. * Allow pooling multiple connections per host. * Put version in user agent "ureq/1.4.1". # 1.4.0 * Propagate WouldBlock in io:Error for Response::to_json. * Merge multiple cookies into one header to be spec compliant. * Allow setting TLSConnector for native-tls. * Remove brackets against TLS lib when IPv6 addr is used as hostname. * Include proxy in connection pool keys. * Stop assuming localhost for URLs without host part. * Error if body length is less than content-length. * Validate header names. # 1.3.0 * Changelog start