feat: update garde to 0.20.0

This commit is contained in:
gengteng
2024-07-12 20:31:17 +08:00
parent a4395e091d
commit f8c1daeeb0
21 changed files with 32 additions and 32 deletions

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "axum-valid" name = "axum-valid"
version = "0.18.0" version = "0.19.0"
description = "Provides validation extractors for your Axum application, allowing you to validate data using validator, garde, validify or all of them." description = "Provides validation extractors for your Axum application, allowing you to validate data using validator, garde, validify or all of them."
authors = ["GengTeng <me@gteng.org>"] authors = ["GengTeng <me@gteng.org>"]
license = "MIT" license = "MIT"
@@ -26,17 +26,17 @@ features = ["full", "aide"]
[dependencies] [dependencies]
axum = { version = "0.7.3", default-features = false } axum = { version = "0.7.3", default-features = false }
garde = { version = "0.18.0", optional = true } garde = { version = "0.20.0", optional = true }
validator = { version = "0.18.1", optional = true } validator = { version = "0.18.1", optional = true }
validify = { version = "1.4.0", optional = true } validify = { version = "1.4.0", optional = true }
[dependencies.axum-extra] [dependencies.axum-extra]
version = "0.9.0" version = "0.9.3"
default-features = false default-features = false
optional = true optional = true
[dependencies.axum-serde] [dependencies.axum-serde]
version = "0.4.1" version = "0.5.0"
optional = true optional = true
[dependencies.axum_typed_multipart] [dependencies.axum_typed_multipart]
@@ -58,10 +58,10 @@ tokio = { version = "1.34.0", features = ["full"] }
reqwest = { version = "0.12.3", features = ["json", "multipart"] } reqwest = { version = "0.12.3", features = ["json", "multipart"] }
serde = { version = "1.0.195", features = ["derive"] } serde = { version = "1.0.195", features = ["derive"] }
validator = { version = "0.18.0", features = ["derive"] } validator = { version = "0.18.0", features = ["derive"] }
garde = { version = "0.18.0", features = ["serde", "derive"] } garde = { version = "0.20.0", features = ["serde", "derive"] }
serde_json = "1.0.108" serde_json = "1.0.108"
serde_yaml = "0.9.27" serde_yaml = "0.9.27"
quick-xml = { version = "0.31.0", features = ["serialize"] } quick-xml = { version = "0.33.0", features = ["serialize"] }
ciborium = { version = "0.2.2" } ciborium = { version = "0.2.2" }
toml = "0.8.8" toml = "0.8.8"
mime = "0.3.17" mime = "0.3.17"

View File

@@ -9,8 +9,8 @@
## 📑 Overview ## 📑 Overview
**axum-valid** is a library that provides data validation extractors for the Axum web framework. It integrates * **axum-valid** is a library that provides data validation extractors for the Axum web framework. It integrates
*validator**, **garde** and **validify**, three popular validation crates in the Rust ecosystem, to offer convenient **validator**, **garde** and **validify**, three popular validation crates in the Rust ecosystem, to offer convenient
validation and data handling extractors for Axum applications. validation and data handling extractors for Axum applications.
## 🚀 Basic usage ## 🚀 Basic usage

View File

@@ -54,7 +54,7 @@
//! } //! }
//! //!
//! async fn handler(Garde(Cbor(parameter)): Garde<Cbor<Parameter>>) { //! async fn handler(Garde(Cbor(parameter)): Garde<Cbor<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! // Support automatic dereferencing //! // Support automatic dereferencing
//! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1); //! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1);
//! } //! }

View File

@@ -89,7 +89,7 @@
//! } //! }
//! //!
//! async fn handler(Garde(Cached(parameter)): Garde<Cached<Parameter>>) { //! async fn handler(Garde(Cached(parameter)): Garde<Cached<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! } //! }
//! //!
//! #[derive(Validate, Clone)] //! #[derive(Validate, Clone)]
@@ -223,7 +223,7 @@
//! WithRejection<Parameter, ValidWithRejectionRejection>, //! WithRejection<Parameter, ValidWithRejectionRejection>,
//! >, //! >,
//! ) { //! ) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! } //! }
//! //!
//! #[derive(Validate)] //! #[derive(Validate)]
@@ -380,7 +380,7 @@
//! WithRejectionGardeRejection, //! WithRejectionGardeRejection,
//! >, //! >,
//! ) { //! ) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! } //! }
//! //!
//! #[derive(Validate)] //! #[derive(Validate)]

View File

@@ -54,7 +54,7 @@
//! } //! }
//! //!
//! async fn handler(Garde(Form(parameter)): Garde<Form<Parameter>>) { //! async fn handler(Garde(Form(parameter)): Garde<Form<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! // Support automatic dereferencing //! // Support automatic dereferencing
//! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1); //! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1);
//! } //! }

View File

@@ -56,7 +56,7 @@
//! } //! }
//! //!
//! async fn handler(Garde(Protobuf(parameter)): Garde<Protobuf<Parameter>>) { //! async fn handler(Garde(Protobuf(parameter)): Garde<Protobuf<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! // Support automatic dereferencing //! // Support automatic dereferencing
//! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1); //! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1);
//! } //! }

View File

@@ -54,7 +54,7 @@
//! } //! }
//! //!
//! async fn handler(Garde(Query(parameter)): Garde<Query<Parameter>>) { //! async fn handler(Garde(Query(parameter)): Garde<Query<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! // Support automatic dereferencing //! // Support automatic dereferencing
//! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1); //! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1);
//! } //! }

View File

@@ -59,7 +59,7 @@
//! } //! }
//! //!
//! async fn handler(parameter: Garde<Parameter>) { //! async fn handler(parameter: Garde<Parameter>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! } //! }
//! //!
//! #[derive(TypedPath, Deserialize, Validate)] //! #[derive(TypedPath, Deserialize, Validate)]

View File

@@ -54,7 +54,7 @@
//! } //! }
//! //!
//! async fn handler(Garde(Form(parameter)): Garde<Form<Parameter>>) { //! async fn handler(Garde(Form(parameter)): Garde<Form<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! // Support automatic dereferencing //! // Support automatic dereferencing
//! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1); //! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1);
//! } //! }

View File

@@ -93,7 +93,7 @@ where
.await .await
.map_err(GardeRejection::Inner)?; .map_err(GardeRejection::Inner)?;
inner.get_validate().validate(&context)?; inner.get_validate().validate_with(&context)?;
Ok(Garde(inner)) Ok(Garde(inner))
} }
} }
@@ -113,7 +113,7 @@ where
let inner = Extractor::from_request_parts(parts, state) let inner = Extractor::from_request_parts(parts, state)
.await .await
.map_err(GardeRejection::Inner)?; .map_err(GardeRejection::Inner)?;
inner.get_validate().validate(&context)?; inner.get_validate().validate_with(&context)?;
Ok(Garde(inner)) Ok(Garde(inner))
} }
} }

View File

@@ -541,7 +541,7 @@ fn validate_again<V: Validate>(validate: V, context: V::Context) -> StatusCode {
// it should have returned `400 BAD REQUEST` if the `parameters` were invalid, // it should have returned `400 BAD REQUEST` if the `parameters` were invalid,
// Let's validate them again to check if the `Garde` extractor works well. // Let's validate them again to check if the `Garde` extractor works well.
// If it works properly, this function will never return `500 INTERNAL SERVER ERROR` // If it works properly, this function will never return `500 INTERNAL SERVER ERROR`
match validate.validate(&context) { match validate.validate_with(&context) {
Ok(_) => StatusCode::OK, Ok(_) => StatusCode::OK,
Err(_) => StatusCode::INTERNAL_SERVER_ERROR, Err(_) => StatusCode::INTERNAL_SERVER_ERROR,
} }

View File

@@ -54,7 +54,7 @@
//! } //! }
//! //!
//! async fn handler(Garde(Json(parameter)): Garde<Json<Parameter>>) { //! async fn handler(Garde(Json(parameter)): Garde<Json<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! // Support automatic dereferencing //! // Support automatic dereferencing
//! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1); //! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1);
//! } //! }

View File

@@ -59,11 +59,11 @@
//! } //! }
//! //!
//! async fn handler(Garde(MsgPack(parameter)): Garde<MsgPack<Parameter>>) { //! async fn handler(Garde(MsgPack(parameter)): Garde<MsgPack<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! } //! }
//! //!
//! async fn raw_handler(Garde(MsgPackRaw(parameter)): Garde<MsgPackRaw<Parameter>>) { //! async fn raw_handler(Garde(MsgPackRaw(parameter)): Garde<MsgPackRaw<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! } //! }
//! #[derive(Validate, Deserialize)] //! #[derive(Validate, Deserialize)]
//! pub struct Parameter { //! pub struct Parameter {

View File

@@ -50,7 +50,7 @@
//! } //! }
//! //!
//! async fn handler(Garde(Path(parameter)): Garde<Path<Parameter>>) { //! async fn handler(Garde(Path(parameter)): Garde<Path<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! // Support automatic dereferencing //! // Support automatic dereferencing
//! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1); //! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1);
//! } //! }

View File

@@ -54,7 +54,7 @@
//! } //! }
//! //!
//! async fn handler(Garde(Query(parameter)): Garde<Query<Parameter>>) { //! async fn handler(Garde(Query(parameter)): Garde<Query<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! // Support automatic dereferencing //! // Support automatic dereferencing
//! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1); //! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1);
//! } //! }

View File

@@ -54,7 +54,7 @@
//! } //! }
//! //!
//! async fn handler(Garde(Sonic(parameter)): Garde<Sonic<Parameter>>) { //! async fn handler(Garde(Sonic(parameter)): Garde<Sonic<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! // Support automatic dereferencing //! // Support automatic dereferencing
//! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1); //! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1);
//! } //! }

View File

@@ -54,7 +54,7 @@
//! } //! }
//! //!
//! async fn handler(Garde(Toml(parameter)): Garde<Toml<Parameter>>) { //! async fn handler(Garde(Toml(parameter)): Garde<Toml<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! // Support automatic dereferencing //! // Support automatic dereferencing
//! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1); //! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1);
//! } //! }

View File

@@ -74,7 +74,7 @@
//! } //! }
//! //!
//! async fn handler(Garde(TypedHeader(parameter)): Garde<TypedHeader<Parameter>>) { //! async fn handler(Garde(TypedHeader(parameter)): Garde<TypedHeader<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! } //! }
//! //!
//! #[derive(Validate)] //! #[derive(Validate)]

View File

@@ -65,7 +65,7 @@
//! } //! }
//! //!
//! async fn handler(Garde(TypedMultipart(parameter)): Garde<TypedMultipart<Parameter>>) { //! async fn handler(Garde(TypedMultipart(parameter)): Garde<TypedMultipart<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! // Support automatic dereferencing //! // Support automatic dereferencing
//! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1); //! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1);
//! } //! }
@@ -75,7 +75,7 @@
//! data: parameter, .. //! data: parameter, ..
//! }): Garde<BaseMultipart<Parameter, TypedMultipartError>>, //! }): Garde<BaseMultipart<Parameter, TypedMultipartError>>,
//! ) { //! ) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! } //! }
//! //!
//! #[derive(TryFromMultipart, Validate)] //! #[derive(TryFromMultipart, Validate)]

View File

@@ -54,7 +54,7 @@
//! } //! }
//! //!
//! async fn handler(Garde(Xml(parameter)): Garde<Xml<Parameter>>) { //! async fn handler(Garde(Xml(parameter)): Garde<Xml<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! // Support automatic dereferencing //! // Support automatic dereferencing
//! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1); //! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1);
//! } //! }

View File

@@ -54,7 +54,7 @@
//! } //! }
//! //!
//! async fn handler(Garde(Yaml(parameter)): Garde<Yaml<Parameter>>) { //! async fn handler(Garde(Yaml(parameter)): Garde<Yaml<Parameter>>) {
//! assert!(parameter.validate(&()).is_ok()); //! assert!(parameter.validate_with(&()).is_ok());
//! // Support automatic dereferencing //! // Support automatic dereferencing
//! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1); //! println!("v0 = {}, v1 = {}", parameter.v0, parameter.v1);
//! } //! }