* Remove Request::build * All mutations on Request follow builder pattern The previous `build()` on request was necessary because mutating functions did not follow a proper builder pattern (taking `&mut self` instead of `mut self`). With a proper builder pattern, the need for `.build()` goes away. * All Request body and call methods consume self Anything which "executes" the request will now consume the `Request` to produce a `Result<Response>`. * Move all config from request to agent builder Timeouts, redirect config, proxy settings and TLS config are now on `AgentBuilder`. * Rename max_pool_connections -> max_idle_connections * Rename max_pool_connections_per_host -> max_idle_connections_per_host Consistent internal and external naming. * Introduce new AgentConfig for static config created by builder. `Agent` can be seen as having two parts. Static config and a mutable shared state between all states. The static config goes into `AgentConfig` and the mutable shared state into `AgentState`. * Replace all use of `Default` for `new`. Deriving or implementing `Default` makes for a secondary instantiation API. It is useful in some cases, but gets very confusing when there is both `new` _and_ a `Default`. It's especially devious for derived values where a reasonable default is not `0`, `false` or `None`. * Remove feature native_tls, we want only native rustls. This feature made for very clunky handling throughout the code. From a security point of view, it's better to stick with one single TLS API. Rustls recently got an official audit (very positive). https://github.com/ctz/rustls/tree/master/audit Rustls deliberately omits support for older, insecure TLS such as TLS 1.1 or RC4. This might be a problem for a user of ureq, but on balance not considered important enough to keep native_tls. * Remove auth and support for basic auth. The API just wasn't enough. A future reintroduction should at least also provide a `Bearer` mechanism and possibly more. * Rename jar -> cookie_store * Rename jar -> cookie_tin Just make some field names sync up with the type. * Drop "cookies" as default feature The need for handling cookies is probably rare, let's not enable it by default. * Change all feature checks for "cookie" to "cookies" The outward facing feature is "cookies" and I think it's better form that the code uses the official feature name instead of the optional library "cookies". * Keep `set` on Agent level as well as AgentBuilder. The idea is that an auth exchange might result in a header that need to be set _after_ the agent has been built.
53 lines
1.6 KiB
TOML
53 lines
1.6 KiB
TOML
[package]
|
|
name = "ureq"
|
|
version = "1.5.1"
|
|
authors = ["Martin Algesten <martin@algesten.se>", "Jacob Hoffman-Andrews <ureq@hoffman-andrews.com>"]
|
|
description = "Minimal HTTP request library"
|
|
license = "MIT/Apache-2.0"
|
|
repository = "https://github.com/algesten/ureq"
|
|
readme = "README.md"
|
|
keywords = ["web", "request", "http", "rest", "client"]
|
|
categories = ["web-programming::http-client"]
|
|
edition = "2018"
|
|
|
|
[package.metadata.docs.rs]
|
|
# Keep in sync with .github/workflows/test.yml
|
|
features = [ "tls", "json", "charset", "cookies", "socks-proxy" ]
|
|
|
|
[features]
|
|
default = ["tls"]
|
|
json = ["serde", "serde_json"]
|
|
charset = ["encoding"]
|
|
tls = ["rustls", "webpki", "webpki-roots"]
|
|
native-certs = ["rustls-native-certs"]
|
|
cookies = ["cookie", "cookie_store"]
|
|
socks-proxy = ["socks"]
|
|
|
|
[dependencies]
|
|
base64 = "0.13"
|
|
chunked_transfer = "1.2.0"
|
|
cookie = { version = "0.14", features = ["percent-encode"], optional = true}
|
|
once_cell = "1"
|
|
qstring = "0.7"
|
|
url = "2"
|
|
socks = { version = "0.3.2", optional = true }
|
|
rustls = { version = "0.18", optional = true, features = [] }
|
|
webpki = { version = "0.21", optional = true }
|
|
webpki-roots = { version = "0.20", optional = true }
|
|
rustls-native-certs = { version = "0.4", optional = true }
|
|
serde = { version = "1", optional = true }
|
|
serde_json = { version = "1", optional = true }
|
|
encoding = { version = "0.2", optional = true }
|
|
cookie_store = { version = "0.12.0", optional = true }
|
|
log = "0.4.11"
|
|
|
|
[dev-dependencies]
|
|
serde = { version = "1", features = ["derive"] }
|
|
rayon = "1.3.0"
|
|
rayon-core = "1.7.0"
|
|
chrono = "0.4.11"
|
|
env_logger = "0.7.1"
|
|
|
|
[[example]]
|
|
name = "smoke-test"
|