feat: update garde to 0.20.0
This commit is contained in:
12
Cargo.toml
12
Cargo.toml
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
//! }
|
//! }
|
||||||
|
|||||||
@@ -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)]
|
||||||
|
|||||||
@@ -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);
|
||||||
//! }
|
//! }
|
||||||
|
|||||||
@@ -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);
|
||||||
//! }
|
//! }
|
||||||
|
|||||||
@@ -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);
|
||||||
//! }
|
//! }
|
||||||
|
|||||||
@@ -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)]
|
||||||
|
|||||||
@@ -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);
|
||||||
//! }
|
//! }
|
||||||
|
|||||||
@@ -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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
//! }
|
//! }
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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);
|
||||||
//! }
|
//! }
|
||||||
|
|||||||
@@ -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);
|
||||||
//! }
|
//! }
|
||||||
|
|||||||
@@ -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);
|
||||||
//! }
|
//! }
|
||||||
|
|||||||
@@ -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);
|
||||||
//! }
|
//! }
|
||||||
|
|||||||
@@ -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)]
|
||||||
|
|||||||
@@ -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)]
|
||||||
|
|||||||
@@ -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);
|
||||||
//! }
|
//! }
|
||||||
|
|||||||
@@ -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);
|
||||||
//! }
|
//! }
|
||||||
|
|||||||
Reference in New Issue
Block a user