-
Notifications
You must be signed in to change notification settings - Fork 57
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add
register
method to all built-in extractors (#141)
- Loading branch information
1 parent
85a0fbb
commit 30626f0
Showing
32 changed files
with
896 additions
and
940 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -70,8 +70,11 @@ jobs: | |
with: | ||
toolchain: nightly | ||
components: rust-docs-json | ||
rustflags: "" | ||
- name: Install Rust stable toolchain | ||
uses: actions-rust-lang/[email protected] | ||
with: | ||
rustflags: "" | ||
- name: Download pavex CLI artifact | ||
uses: actions/download-artifact@v4 | ||
with: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
49 changes: 5 additions & 44 deletions
49
doc_examples/guide/request_data/buffered_body/project/src/blueprint.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,51 +1,12 @@ | ||
use pavex::blueprint::Blueprint; | ||
use pavex::blueprint::constructor::Lifecycle; | ||
use pavex::f; | ||
use pavex::request::body::{BodySizeLimit, BufferedBody}; | ||
|
||
pub fn blueprint() -> Blueprint { | ||
let mut bp = Blueprint::new(); | ||
register_common_constructors(&mut bp); | ||
bp.nest(crate::buffered_body::blueprint()); | ||
bp | ||
} | ||
|
||
/// Common constructors used by all routes. | ||
fn register_common_constructors(bp: &mut Blueprint) { | ||
// Query parameters | ||
bp.constructor( | ||
f!(pavex::request::query::QueryParams::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::query::errors::ExtractQueryParamsError::into_response | ||
)); | ||
BufferedBody::register(&mut bp); | ||
BodySizeLimit::register(&mut bp); | ||
|
||
// Route parameters | ||
bp.constructor( | ||
f!(pavex::request::route::RouteParams::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::route::errors::ExtractRouteParamsError::into_response | ||
)); | ||
|
||
// Json body | ||
bp.constructor( | ||
f!(pavex::request::body::JsonBody::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::body::errors::ExtractJsonBodyError::into_response | ||
)); | ||
bp.constructor( | ||
f!(pavex::request::body::BufferedBody::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::body::errors::ExtractBufferedBodyError::into_response | ||
)); | ||
bp.constructor( | ||
f!(<pavex::request::body::BodySizeLimit as std::default::Default>::default), | ||
Lifecycle::RequestScoped, | ||
); | ||
bp.nest(crate::buffered_body::blueprint()); | ||
bp | ||
} |
50 changes: 6 additions & 44 deletions
50
doc_examples/guide/request_data/json/project/src/blueprint.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,51 +1,13 @@ | ||
use pavex::blueprint::constructor::Lifecycle; | ||
use pavex::blueprint::Blueprint; | ||
use pavex::f; | ||
use pavex::request::body::{BodySizeLimit, BufferedBody, JsonBody}; | ||
|
||
pub fn blueprint() -> Blueprint { | ||
let mut bp = Blueprint::new(); | ||
register_common_constructors(&mut bp); | ||
bp.nest(crate::json::blueprint()); | ||
bp | ||
} | ||
|
||
/// Common constructors used by all routes. | ||
fn register_common_constructors(bp: &mut Blueprint) { | ||
// Query parameters | ||
bp.constructor( | ||
f!(pavex::request::query::QueryParams::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::query::errors::ExtractQueryParamsError::into_response | ||
)); | ||
JsonBody::register(&mut bp); | ||
BufferedBody::register(&mut bp); | ||
BodySizeLimit::register(&mut bp); | ||
|
||
// Route parameters | ||
bp.constructor( | ||
f!(pavex::request::route::RouteParams::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::route::errors::ExtractRouteParamsError::into_response | ||
)); | ||
|
||
// Json body | ||
bp.constructor( | ||
f!(pavex::request::body::JsonBody::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::body::errors::ExtractJsonBodyError::into_response | ||
)); | ||
bp.constructor( | ||
f!(pavex::request::body::BufferedBody::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::body::errors::ExtractBufferedBodyError::into_response | ||
)); | ||
bp.constructor( | ||
f!(<pavex::request::body::BodySizeLimit as std::default::Default>::default), | ||
Lifecycle::RequestScoped, | ||
); | ||
bp.nest(crate::json::blueprint()); | ||
bp | ||
} |
46 changes: 2 additions & 44 deletions
46
doc_examples/guide/request_data/query_params/project/src/blueprint.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,51 +1,9 @@ | ||
use pavex::blueprint::Blueprint; | ||
use pavex::blueprint::constructor::Lifecycle; | ||
use pavex::f; | ||
use pavex::request::query::QueryParams; | ||
|
||
pub fn blueprint() -> Blueprint { | ||
let mut bp = Blueprint::new(); | ||
register_common_constructors(&mut bp); | ||
QueryParams::register(&mut bp); | ||
bp.nest(crate::query_params::blueprint()); | ||
bp | ||
} | ||
|
||
/// Common constructors used by all routes. | ||
fn register_common_constructors(bp: &mut Blueprint) { | ||
// Query parameters | ||
bp.constructor( | ||
f!(pavex::request::query::QueryParams::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::query::errors::ExtractQueryParamsError::into_response | ||
)); | ||
|
||
// Route parameters | ||
bp.constructor( | ||
f!(pavex::request::route::RouteParams::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::route::errors::ExtractRouteParamsError::into_response | ||
)); | ||
|
||
// Json body | ||
bp.constructor( | ||
f!(pavex::request::body::JsonBody::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::body::errors::ExtractJsonBodyError::into_response | ||
)); | ||
bp.constructor( | ||
f!(pavex::request::body::BufferedBody::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::body::errors::ExtractBufferedBodyError::into_response | ||
)); | ||
bp.constructor( | ||
f!(<pavex::request::body::BodySizeLimit as std::default::Default>::default), | ||
Lifecycle::RequestScoped, | ||
); | ||
} |
46 changes: 2 additions & 44 deletions
46
doc_examples/guide/request_data/route_params/project/src/blueprint.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,51 +1,9 @@ | ||
use pavex::blueprint::constructor::Lifecycle; | ||
use pavex::blueprint::Blueprint; | ||
use pavex::f; | ||
use pavex::request::route::RouteParams; | ||
|
||
pub fn blueprint() -> Blueprint { | ||
let mut bp = Blueprint::new(); | ||
register_common_constructors(&mut bp); | ||
RouteParams::register(&mut bp); | ||
bp.nest(crate::route_params::blueprint()); | ||
bp | ||
} | ||
|
||
/// Common constructors used by all routes. | ||
fn register_common_constructors(bp: &mut Blueprint) { | ||
// Query parameters | ||
bp.constructor( | ||
f!(pavex::request::query::QueryParams::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::query::errors::ExtractQueryParamsError::into_response | ||
)); | ||
|
||
// Route parameters | ||
bp.constructor( | ||
f!(pavex::request::route::RouteParams::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::route::errors::ExtractRouteParamsError::into_response | ||
)); | ||
|
||
// Json body | ||
bp.constructor( | ||
f!(pavex::request::body::JsonBody::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::body::errors::ExtractJsonBodyError::into_response | ||
)); | ||
bp.constructor( | ||
f!(pavex::request::body::BufferedBody::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
.error_handler(f!( | ||
pavex::request::body::errors::ExtractBufferedBodyError::into_response | ||
)); | ||
bp.constructor( | ||
f!(<pavex::request::body::BodySizeLimit as std::default::Default>::default), | ||
Lifecycle::RequestScoped, | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,7 @@ | ||
```rust title="demo/src/blueprint.rs" hl_lines="4 5 6 7" | ||
```rust title="demo/src/blueprint.rs" hl_lines="3" | ||
// [...] | ||
fn register_common_constructors(bp: &mut Blueprint) { | ||
// [...] | ||
bp.constructor( | ||
f!(pavex::request::route::RouteParams::extract), | ||
Lifecycle::RequestScoped, | ||
) | ||
RouteParams::register(bp); | ||
// [...] | ||
} | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,19 @@ | ||
diff --git a/demo/src/routes/greet.rs b/demo/src/routes/greet.rs | ||
index 0d94360..fbcb3fc 100644 | ||
index e0be313..5080f53 100644 | ||
--- a/demo/src/routes/greet.rs | ||
+++ b/demo/src/routes/greet.rs | ||
@@ -1,11 +1,14 @@ | ||
-use pavex::request::RouteParams; | ||
+use pavex::request::route::RouteParams; | ||
use pavex::response::Response; | ||
|
||
@@ -3,9 +3,11 @@ use pavex::response::Response; | ||
|
||
#[RouteParams] | ||
pub struct GreetParams { | ||
- pub name: String, /* (1)! */ | ||
+ pub name: String, | ||
} | ||
|
||
-pub fn greet(params: RouteParams<GreetParams> /* (2)! */) -> Response { | ||
- todo!() | ||
+pub fn greet(params: RouteParams<GreetParams>) -> Response { | ||
+ let GreetParams { name }/* (1)! */ = params.0; | ||
+ Response::ok() // (2)! | ||
+ .set_typed_body(format!("Hello, {name}!")) // (3)! | ||
+ .box_body() | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.