Commit Graph
115 Commits
Author SHA1 Message Date
David Pedersen 6cd356690d Annotate panicking functions with #[track_caller] (#1248) 2022-08-11 12:45:42 +02:00
David PedersenandJonas Platte 50a4be999d Update matchit and fix nesting inconsistencies (#1086)
* Break `Router::nest` into `nest` and `nest_service` methods

* fix doc tests

* update docs

* fix

* Only accept `Router` in `Resource::{nest, nest_collection}`

* update changelog

* fix docs

* fix `MatchedPath` with `Router`s nested with `nest_service`

* Apply suggestions from code review

Co-authored-by: Jonas Platte <[email protected]>

* adjust docs for fallbacks

* Always nest services as opaque

* fix old docs reference

* more tests for `MatchedPath` with nested handlers

* minor clean up

* use identifier captures in format strings

* Apply suggestions from code review

Co-authored-by: Jonas Platte <[email protected]>

* fix test

Co-authored-by: Jonas Platte <[email protected]>
2022-08-11 10:17:08 +00:00
Jonas Platte 7cbb7cf135 Use new Cargo features to avoid implicit features for optional dependencies (#1239)
* Fix changelog entry for MSRV change in axum-extra 0.3.5

* Bump MSRV to 1.60 for axum, axum-extra, axum-macros

* Use new Cargo features to avoid implicit features for optional dependencies
2022-08-09 18:43:02 +02:00
David Pedersen b243e171fd Accept S::Response: IntoResponse everywhere (#1165) 2022-07-19 18:55:15 +02:00
SzudemJ 73041c8988 Avoid exposure of type names by QueryRejection (#1171) 2022-07-18 13:43:18 +00:00
David Pedersen 329bd5f9b4 Support any middleware response that implements IntoResponse (#1152)
* Support any middleware response that implements `IntoResponse`

* Require `Infallible` for middleware added with `Handler::layer`
2022-07-13 08:38:19 +00:00
David Pedersen 92dbbd3182 Return rejection if WebSocket request couldn't be upgraded (#1135)
* Return rejection if `WebSocket` request couldn't be upgraded

* make rejection about connection upgrades

* changelog links
2022-07-11 14:33:55 +02:00
David Pedersen 2966407dc1 Re-export debug_handler from axum (#1144)
* Re-export `debug_handler` from axum

Fixes #1143

* also axum-extra
2022-07-04 09:10:52 +00:00
David Pedersen 2e80ebd18d Support running extractors from middleware::from_fn 2022-07-03 16:49:20 +02:00
NicolaLSandDavid Pedersen 34146f3139 Implement TryFrom<Method> for MethodFilter (#1130)
* implement TryFrom<http::Method> for MethodFilter

* test for TryFrom<http::Method> for MethodFilter

* 'UnsupportedMethod' error type for MethodFilter

* Log TryFrom<http::Method> for MethodFilter

* adjust docs

* move docs

Co-authored-by: David Pedersen <[email protected]>
2022-07-01 08:37:41 +00:00
David PedersenandJonas Platte a4c820420d Remove trailing slash redirects (#1119)
* Prepare axum-next branch

* Remove deprecated `extractor_middleware` function (#1077)

* Allow `Error: Into<Infallible>` for `Route::{layer, route_layer}` (#948)

* Allow `Error: Into<Infallible>` for `Route::{layer, route_layer}` (#924)

* Allow `Error: Into<Infallible>` for `Route::{layer, route_layer}`

Fixes https://github.com/tokio-rs/axum/issues/922

* changelog

* fixup changelog

* Panic on overlapping routes in `MethodRouter` (#1102)

* Panic on overlapping routes in `MethodRouter`

* changelog link

* add test to ensure `head` and `get` don't overlap

* Fix changelog

* Prepare axum-next branch

* Remove trailing slash redirects

* changelog link

* Fix changelog

* remove asserting to make make the test more clear

* remove tsr related feature

* Add `RouterExt::route_with_tsr`

* Apply suggestions from code review

Co-authored-by: Jonas Platte <[email protected]>

* Update axum-extra/src/routing/mod.rs

Co-authored-by: Jonas Platte <[email protected]>

* fix typos in docs

* Update axum/CHANGELOG.md

Co-authored-by: Jonas Platte <[email protected]>

* mention `RouterExt::route_with_tsr` in the changelog

Co-authored-by: Jonas Platte <[email protected]>
2022-06-30 00:22:43 +02:00
David Pedersen 23808f72a2 Fix changelog 2022-06-28 22:07:10 +02:00
David Pedersen 2b386c0baa Panic on overlapping routes in MethodRouter (#1102)
* Panic on overlapping routes in `MethodRouter`

* changelog link

* add test to ensure `head` and `get` don't overlap
2022-06-28 22:07:10 +02:00
David Pedersen 661473dcbc Allow Error: Into<Infallible> for Route::{layer, route_layer} (#948)
* Allow `Error: Into<Infallible>` for `Route::{layer, route_layer}` (#924)

* Allow `Error: Into<Infallible>` for `Route::{layer, route_layer}`

Fixes https://github.com/tokio-rs/axum/issues/922

* changelog

* fixup changelog
2022-06-28 22:07:10 +02:00
David Pedersen 56ddabcd7d Remove deprecated extractor_middleware function (#1077) 2022-06-28 22:07:10 +02:00
David Pedersen 7e794e9d1d axum: Version 0.5.10 (#1128) 2022-06-28 21:32:39 +02:00
David PedersenandJonas Platte a8d0ce8c03 Fix possible panic when doing trailing slash redirect (#1124)
* Fix possible panic when doing trailing slash redirect

Fixes https://github.com/tokio-rs/axum/issues/1122

* changelog link

* Update axum/src/routing/mod.rs

Co-authored-by: Jonas Platte <[email protected]>

Co-authored-by: Jonas Platte <[email protected]>
2022-06-28 16:58:13 +02:00
David PedersenandJonas Platte cb207472f4 Make Router faster to clone (#1123)
* Make `Router` faster to clone

* changelog

* Update axum/src/routing/mod.rs

Co-authored-by: Jonas Platte <[email protected]>

* fix

* Update axum/src/routing/mod.rs

Co-authored-by: Jonas Platte <[email protected]>

Co-authored-by: Jonas Platte <[email protected]>
2022-06-27 11:00:19 +02:00
David Pedersen fabb205a9e axum: Version 0.5.9 (#1108) 2022-06-20 13:44:15 +02:00
David Pedersen 7f203b96e6 Fix build with form feature without headers feature (#1107)
Fixes #1106
2022-06-20 09:14:21 +02:00
David Pedersen 5ac0b2b3d7 axum: Version 0.5.8 (#1104) 2022-06-18 11:38:52 +02:00
David Pedersen 2f64064650 Implement IntoResponse for Form (#1095) 2022-06-17 18:23:57 +00:00
David Pedersen 93251fa203 Bump MSRV to 1.56 and update to the 2021 edition (#1098) 2022-06-17 20:11:35 +02:00
David PedersenandJonas Platte dbdbd0165e Support Forwarded in Host extractor (#1078)
* Support `Forwarded` in `Host` extractor

* changelog

* Update axum/src/extract/host.rs

Co-authored-by: Jonas Platte <[email protected]>

* look for `host` key

Co-authored-by: Jonas Platte <[email protected]>
2022-06-10 22:30:01 +02:00
David Pedersen 7aa3f35129 axum: Version 0.5.7 (#1075) 2022-06-08 16:08:11 +02:00
David Pedersen 0936a246bf Add extract::ws::close_code which contains constants for close codes (#1067)
The values and docs are copied from [tungstenite].

Fixes #1061

[tungstenite]: https://docs.rs/tungstenite/0.17.2/src/tungstenite/protocol/frame/coding.rs.html#119-188
2022-06-08 09:36:59 +02:00
David Pedersen 8ff275499b Add #1049 to changelogs 2022-06-06 18:00:52 +02:00
David Pedersen 6c10f41d94 Support Path<Vec<(String, String)>> (#1059)
* Support `Path<Vec<(String, String)>>`

* changelog
2022-05-27 14:11:33 +02:00
Christofer Nolander d7c4e2f807 Implement Default for Extension (#1043) 2022-05-18 15:44:08 +00:00
David Pedersen 316e20fbd9 axum: Version 0.5.6 (#1033) 2022-05-15 23:05:00 +02:00
David Pedersen 178e1801e9 Add axum_extra::extract::Form (#1031)
* Add `axum_extra::extra::Form`

* update tokio-util ban
2022-05-15 15:17:45 +00:00
David PedersenandJonas Platte 08cbade3cb Improve Path error when its extracted multiple times (#1023)
* Improve `Path` error

* Improve docs

* changelog

* Update axum/src/extract/path/mod.rs

Co-authored-by: Jonas Platte <[email protected]>

* fix test

Co-authored-by: Jonas Platte <[email protected]>
2022-05-11 11:38:37 +02:00
280334347b Add protocol field to WebSocket (#1022)
* Add protocol field to WebSocket

Signed-off-by: Matteo Joliveau <[email protected]>

* Use HeaderValue instead of String

Signed-off-by: Matteo Joliveau <[email protected]>

* Update axum/src/extract/ws.rs

Co-authored-by: Jonas Platte <[email protected]>

* Update changelog

Co-authored-by: David Pedersen <[email protected]>
Co-authored-by: Jonas Platte <[email protected]>
2022-05-11 08:49:44 +00:00
David Pedersen 96aaac4865 axum: Version 0.5.5 (#1014) 2022-05-10 11:43:08 +00:00
David Pedersen a3a32f493e Add MethodRouter::{into_make_service, into_make_service_with_connect_info} (#1010) 2022-05-08 19:48:48 +02:00
d19beffd6d Handle GET, HEAD, and OPTIONS correctly in ContentLengthLimit (#989)
* Handle `GET`/`HEAD`/`OPTIONS` in `ContentLengthLimit`

* changelog

* Apply suggestions from code review

Co-authored-by: Marcus Griep <[email protected]>

* Don't allow GET/HEAD/OPTIONS with `transfer-encoding: chunked`

* simplify constructing chunked body

* Update axum/src/extract/content_length_limit.rs

Co-authored-by: Jonas Platte <[email protected]>

Co-authored-by: Marcus Griep <[email protected]>
Co-authored-by: Jonas Platte <[email protected]>
2022-05-05 09:17:54 +02:00
David Pedersen a723ed1453 axum: Version 0.5.4 (#973) 2022-04-26 16:50:44 +02:00
David Pedersen 79f6cde3b1 Update to tower-http 0.3.0 (#965)
* Update to tower-http 0.3.0

* changelog link
2022-04-25 14:59:16 +00:00
Arniu TsengandDavid Pedersen ebecac57a3 Add FromExtractor and deprecate extractor_middleware (#957)
* Add from_extractor and deprecate extractor_middleware

* Fix clippy warnings

* Update CHANGELOG.md

* Clean doc

* Add ExtractorMiddleware* back for compatibility

* Revert "Update CHANGELOG.md"

* remove dedundant docs

* allow re-exporting deprecated types

Co-authored-by: David Pedersen <[email protected]>
2022-04-24 15:31:17 +00:00
8084b242d5 Add response::ErrorResponse and response::Result (#921)
* feat: add response::{Error, Result}

This type makes for efficient use of the `?` operator when in a function
with multiple return error types that all implement `IntoResponse`.

Signed-off-by: Nathaniel McCallum <[email protected]>

* misc adjustments from PR review

* Rename to `ErrorResponse` and `ResultResponse`

* nitpicky docs changes

* update changelog

* changelog wording

* Apply suggestions from code review

Co-authored-by: Jonas Platte <[email protected]>

Co-authored-by: David Pedersen <[email protected]>
Co-authored-by: Jonas Platte <[email protected]>
2022-04-21 16:24:29 +02:00
David PedersenandJonas Platte 061e66c236 axum: Version 0.5.3 (#947)
* axum: Version 0.5.3

* Update axum/CHANGELOG.md

Co-authored-by: Jonas Platte <[email protected]>

Co-authored-by: Jonas Platte <[email protected]>
2022-04-19 17:00:51 +02:00
David Pedersen 2adb34c8aa Revert "Allow Error: Into<Infallible> for Route::{layer, route_layer} (#924)" (#946)
This reverts commit ca7ecb159b.
2022-04-19 16:47:27 +02:00
David Pedersen 883a1cfd8f axum: Version 0.5.2 2022-04-19 16:19:43 +02:00
David Pedersen ca7ecb159b Allow Error: Into<Infallible> for Route::{layer, route_layer} (#924)
* Allow `Error: Into<Infallible>` for `Route::{layer, route_layer}`

Fixes https://github.com/tokio-rs/axum/issues/922

* changelog
2022-04-19 16:16:54 +02:00
David Pedersen afcefb4a70 Add AppendHeaders (#927)
* Add `AppendHeaders`

* axum changelog
2022-04-17 23:14:04 +02:00
David CalaveraandDavid Pedersen 83e1a15040 Fix trailing redirection with query parameters (#936)
* Fix trailing redirection with query parameters

When the request URI matches a route that need a trailing slash, or has an extra trailing slash, the redirect URI is not generated correctly.

This change adds or removes a trailing slash to the path part of the URI, instead of the full URI, preserving query parameters during redirection.

Signed-off-by: David Calavera <[email protected]>

* Make trailing slash logic safer

Extract parts from Uri and recreate it, so it doesn't bump
into corner cases with string manipulation.

Signed-off-by: David Calavera <[email protected]>

* Remove extra assignment.

Signed-off-by: David Calavera <[email protected]>

* Update axum/src/routing/mod.rs

Co-authored-by: David Pedersen <[email protected]>

* changelog

Co-authored-by: David Pedersen <[email protected]>
2022-04-17 21:12:52 +00:00
Grachev Mikhail 4c936dbb52 Fix a typo in CHANGELOG.md (#906) 2022-04-04 09:26:39 +02:00
Tristan BouchardandDavid Pedersen d417910a16 Add Field::chunk (#901)
* Added chunk function to multipart field

This fixes not being able to stream data from a multipart directly into a file or other output.

* doc comment for clarification of usage and &mut self

* fixed formatting

* Corrected example to reflex best practices

* Removed unwrap

* clean up docs

* update changelog

Co-authored-by: David Pedersen <[email protected]>
2022-04-04 09:26:11 +02:00
David Pedersen 3e716f303f axum: Version 0.5.1 2022-04-03 20:23:18 +02:00
Jonas Platte 1191b58083 Add RequestParts::extract (#897) 2022-04-01 09:25:15 +02:00