Skip to content

Commit 043d57b

Browse files
authored
make reqwest version a feature (#179)
* make reqwest version a feature * do not bump schemars version yet * fixed importconfig example * fixed doctest
1 parent d5189e8 commit 043d57b

File tree

14 files changed

+58
-16
lines changed

14 files changed

+58
-16
lines changed

Cargo.toml

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,13 @@ repository = "https://github.com/kilork/keycloak"
1414
rust-version = "1.87"
1515

1616
[features]
17-
default = ["tags-all", "resource-builder"]
17+
default = ["tags-all", "resource-builder", "reqwest"]
1818
resource-builder = ["builder", "resource"]
1919
schemars = ["dep:schemars"]
20-
multipart = ["reqwest/multipart"]
20+
multipart = ["reqwest12?/multipart", "reqwest13?/multipart"]
21+
reqwest = ["reqwest13"]
22+
reqwest12 = ["dep:reqwest12"]
23+
reqwest13 = ["dep:reqwest13"]
2124
rc = ["rc-map", "rc-str", "rc-val", "rc-vec"]
2225
rc-map = ["serde/rc"]
2326
rc-str = ["serde/rc"]
@@ -50,20 +53,29 @@ resource = []
5053
builder = []
5154

5255
[dependencies]
53-
reqwest = { version = "0.12", default-features = false, features = ["json"] }
56+
reqwest12 = { package = "reqwest", version = "0.12", default-features = false, features = [
57+
"json",
58+
], optional = true }
59+
reqwest13 = { package = "reqwest", version = "0.13", default-features = false, features = [
60+
"form",
61+
"json",
62+
"query",
63+
], optional = true }
5464
serde_json = "1"
5565
serde = { version = "1", features = ["derive"] }
5666
serde_with = { version = "3", default-features = false, features = ["macros"] }
5767
async-trait = "0.1"
58-
schemars = { version = "0.8.11", default-features = false, features = [
59-
"derive",
60-
], optional = true }
61-
percent-encoding = "2.3.1"
68+
schemars = { version = "0.8.22", optional = true, default-features = false, features = [ "derive" ] }
69+
percent-encoding = "2.3.2"
6270

6371
[dev-dependencies]
6472
tokio = { version = "1", features = ["full"] }
6573
heck = "0.5"
66-
clap = { version = "4", features = ["derive", "help", "std"], default-features = false }
67-
toml = "0.8"
74+
clap = { version = "4", features = [
75+
"derive",
76+
"help",
77+
"std",
78+
], default-features = false }
79+
toml = "0.9.11"
6880
serde = { version = "1", features = ["derive", "rc"] }
6981
indexmap = { version = "2", features = ["serde"] }

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,16 @@ Implements [Keycloak Admin REST API version 26.4.0](https://www.keycloak.org/doc
1010

1111
### Feature flags
1212

13-
Default flags: `tags-all`.
13+
Default flags: `tags-all`, `resource-builder`, `reqwest`.
1414

1515
- `rc`: use `Arc` for deserialization.
1616
- `schemars`: add [schemars](https://crates.io/crates/schemars) support.
1717
- `multipart`: add multipart support to reqwest, enabling extra methods in API.
1818
- `tags-all`: activate all tags (resource groups) in REST API, it is default behavior. Disable default features and use individual `tag-xxx` features to activate only required resource groups. For a full list reference the [Cargo.toml](Cargo.toml).
1919
- `resource-builder`: add resource builder support.
20+
- `reqwest`: use up to date [reqwest](https://crates.io/crates/reqwest) version (`reqwest 0.13.x`).
21+
- `reqwest12`: use `reqwest 0.12.x`.
22+
- `reqwest13`: use `reqwest 0.13.x`.
2023

2124
## Usage
2225

examples/adduser.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#[tokio::main]
22
async fn main() -> Result<(), Box<dyn std::error::Error>> {
33
use keycloak::{
4+
prelude::reqwest,
45
types::*,
56
{KeycloakAdmin, KeycloakAdminToken},
67
};

examples/importconfig.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
async fn main() -> Result<(), Box<dyn std::error::Error>> {
33
#[cfg(feature = "multipart")]
44
{
5-
use keycloak::{KeycloakAdmin, KeycloakAdminToken};
5+
use keycloak::{
6+
prelude::reqwest,
7+
{KeycloakAdmin, KeycloakAdminToken},
8+
};
69

710
let url = std::env::var("KEYCLOAK_ADDR").unwrap_or_else(|_| "http://localhost:8080".into());
811
let user = std::env::var("KEYCLOAK_USER").unwrap_or_else(|_| "admin".into());

examples/openapi.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ mod openapi {
8181
use indexmap::IndexMap;
8282
use serde::Deserialize;
8383

84+
use keycloak::prelude::reqwest;
85+
8486
use crate::{RESERVED_WORDS, TAG_NONE};
8587

8688
#[derive(Debug, PartialEq, Eq)]

examples/resource_adduser.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ fn main() {}
33
#[cfg(all(feature = "builder", feature = "resource"))]
44
#[tokio::main]
55
async fn main() -> Result<(), Box<dyn std::error::Error>> {
6-
use keycloak::{types::*, KeycloakAdmin, KeycloakAdminToken};
6+
use keycloak::{prelude::reqwest, types::*, KeycloakAdmin, KeycloakAdminToken};
77

88
const REALM: &str = "resource";
99

rust-toolchain.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[toolchain]
2+
channel = "1.87"
3+
profile = "minimal"
4+
components = [ "rustfmt", "clippy", "rust-analyzer" ]

src/error.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ use std::{borrow::Cow, error::Error, fmt::Display};
22

33
use serde::{Deserialize, Serialize};
44

5+
use crate::prelude::reqwest;
6+
57
#[derive(Debug)]
68
pub enum KeycloakError {
79
ReqwestFailure(reqwest::Error),

src/lib.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,11 @@ keycloak = "~26.4"
3333
```rust, no_run
3434
#[tokio::main]
3535
async fn main() -> Result<(), Box<dyn std::error::Error>> {
36-
use keycloak::{types::*, KeycloakAdmin, KeycloakAdminToken};
36+
use keycloak::{
37+
prelude::reqwest,
38+
types::*,
39+
{KeycloakAdmin, KeycloakAdminToken},
40+
};
3741
3842
const REALM: &str = "resource";
3943
@@ -110,6 +114,7 @@ pub mod resource;
110114
pub mod types;
111115

112116
mod error;
117+
pub mod prelude;
113118
mod rest;
114119

115120
pub use error::KeycloakError;

src/prelude.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#[cfg(all(feature = "reqwest12", not(feature = "reqwest13")))]
2+
pub use reqwest12 as reqwest;
3+
#[cfg(all(feature = "reqwest12", feature = "reqwest13"))]
4+
pub use reqwest13 as reqwest;
5+
#[cfg(all(feature = "reqwest13", not(feature = "reqwest12")))]
6+
pub use reqwest13 as reqwest;

0 commit comments

Comments
 (0)