Skip to content

Commit

Permalink
Fix h1-client and default-client feature
Browse files Browse the repository at this point in the history
This also adds a CI task to check all feature combinations work properly.
  • Loading branch information
taiki-e committed Feb 14, 2021
1 parent fc75a59 commit 0c55a69
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 9 deletions.
20 changes: 20 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -87,3 +87,23 @@ jobs:

- name: docs
run: cargo doc --no-deps

check_features:
name: Check feature combinations
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master

- name: Install stable
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true

- name: Install cargo-hack
run: cargo install cargo-hack

- name: Check feature combinations
# * `--feature-powerset` - run for the feature powerset of the package
# * `--no-dev-deps` - build without dev-dependencies to avoid https://github.com/rust-lang/cargo/issues/4866
run: cargo hack check --feature-powerset --no-dev-deps
6 changes: 3 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description = "Surf the web - HTTP client framework"
keywords = ["http", "client", "framework", "request", "async"]
categories = ["web-programming", "web-programming::http-client"]
authors = [
"Yoshua Wuyts <yoshuawuyts@gmail.com>",
"Yoshua Wuyts <yoshuawuyts@gmail.com>",
"dignifiedquire <me@dignifiedquire.com>",
"Renée Kooi <renee@kooi.me>",
"Jeremiah Senkpiel <fishrock123@rocketmail.com>"
Expand All @@ -21,7 +21,7 @@ edition = "2018"
# `.github/workflows/ci.yaml` are updated accordingly
default = ["curl-client", "middleware-logger", "encoding"]
curl-client = ["http-client/curl_client", "once_cell", "default-client"]
h1-client = ["http-client/h1_client", "default-client"]
h1-client = ["http-client/h1_client", "http-client/native-tls", "default-client"]
hyper-client = ["http-client/hyper_client", "once_cell", "default-client", "async-std/tokio02"]
wasm-client = ["http-client/wasm_client", "default-client"]
default-client = []
Expand All @@ -35,7 +35,7 @@ log = { version = "0.4.7", features = ["kv_unstable"] }
mime_guess = "2.0.3"
serde = "1.0.97"
serde_json = "1.0.40"
http-client = { version = "6.1.0", default-features = false }
http-client = { version = "6.3.0", default-features = false }
http-types = "2.5.0"
async-std = { version = "1.6.0", default-features = false, features = ["std"] }
async-trait = "0.1.36"
Expand Down
42 changes: 37 additions & 5 deletions src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use cfg_if::cfg_if;
cfg_if! {
if #[cfg(feature = "curl-client")] {
use http_client::isahc::IsahcClient as DefaultClient;
} else if #[cfg(feature = "wasm-client")] {
} else if #[cfg(all(feature = "wasm-client", target_arch = "wasm32"))] {
use http_client::wasm::WasmClient as DefaultClient;
} else if #[cfg(feature = "h1-client")] {
use http_client::h1::H1Client as DefaultClient;
Expand Down Expand Up @@ -76,7 +76,15 @@ impl fmt::Debug for Client {
}
}

#[cfg(feature = "default-client")]
#[cfg(all(
feature = "default-client",
any(
feature = "curl-client",
all(feature = "wasm-client", target_arch = "wasm32"),
feature = "h1-client",
feature = "hyper-client"
)
))]
impl Default for Client {
fn default() -> Self {
Self::new()
Expand All @@ -97,14 +105,30 @@ impl Client {
/// let res = client.send(req).await?;
/// # Ok(()) }
/// ```
#[cfg(feature = "default-client")]
#[cfg(all(
feature = "default-client",
any(
feature = "curl-client",
all(feature = "wasm-client", target_arch = "wasm32"),
feature = "h1-client",
feature = "hyper-client"
)
))]
pub fn new() -> Self {
Self::with_http_client(DefaultClient::new())
}

pub(crate) fn new_shared_or_panic() -> Self {
cfg_if! {
if #[cfg(feature = "default-client")] {
if #[cfg(all(
feature = "default-client",
any(
feature = "curl-client",
all(feature = "wasm-client", target_arch = "wasm32"),
feature = "h1-client",
feature = "hyper-client"
)
))] {
Self::new_shared()
} else {
panic!("default client not configured")
Expand Down Expand Up @@ -140,7 +164,15 @@ impl Client {
client
}

#[cfg(feature = "default-client")]
#[cfg(all(
feature = "default-client",
any(
feature = "curl-client",
all(feature = "wasm-client", target_arch = "wasm32"),
feature = "h1-client",
feature = "hyper-client"
)
))]
pub(crate) fn new_shared() -> Self {
cfg_if! {
if #[cfg(any(feature = "curl-client", feature = "hyper-client"))] {
Expand Down
10 changes: 9 additions & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,15 @@ pub use request_builder::RequestBuilder;
pub use response::{DecodeError, Response};

cfg_if::cfg_if! {
if #[cfg(feature = "default-client")] {
if #[cfg(all(
feature = "default-client",
any(
feature = "curl-client",
all(feature = "wasm-client", target_arch = "wasm32"),
feature = "h1-client",
feature = "hyper-client"
)
))] {
mod one_off;
pub use one_off::{connect, delete, get, head, options, patch, post, put, trace};

Expand Down

0 comments on commit 0c55a69

Please sign in to comment.