Skip to content

Commit 83883be

Browse files
committed
upgrade to axum 0.6
1 parent 754fd98 commit 83883be

File tree

6 files changed

+71
-42
lines changed

6 files changed

+71
-42
lines changed

Cargo.lock

Lines changed: 38 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ iron = "0.6"
9191
router = "0.6"
9292

9393
# axum dependencies
94-
axum = "0.5.17"
94+
axum = "0.6.0"
95+
axum-extra = "0.4.0"
9596
hyper = { version = "0.14.15", default-features = false }
9697
tower = "0.4.11"
9798
tower-service = "0.3.2"

src/test/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ impl TestFrontend {
587587
.unwrap()
588588
.serve(
589589
axum_app
590-
.fallback(
590+
.fallback_service(
591591
build_strangler_service(iron_server.socket)
592592
.expect("could not build strangler service"),
593593
)

src/web/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@ pub fn start_web_server(addr: Option<&str>, context: &dyn Context) -> Result<(),
490490
axum::Server::bind(&axum_addr)
491491
.serve(
492492
build_axum_app(context, template_data)?
493-
.fallback(build_strangler_service(iron_server.socket)?)
493+
.fallback_service(build_strangler_service(iron_server.socket)?)
494494
.into_make_service(),
495495
)
496496
.await?;

src/web/routes.rs

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,32 @@ use axum::{
66
handler::Handler as AxumHandler, middleware, response::Redirect, routing::get,
77
routing::MethodRouter, Router as AxumRouter,
88
};
9+
use axum_extra::routing::RouterExt;
910
use iron::middleware::Handler;
1011
use router::Router as IronRouter;
1112
use std::{borrow::Cow, collections::HashSet, convert::Infallible};
1213
use tracing::instrument;
1314

1415
#[instrument(skip_all)]
15-
fn get_static<H, T, B>(handler: H) -> MethodRouter<B, Infallible>
16+
fn get_static<H, T, S, B>(handler: H) -> MethodRouter<S, B, Infallible>
1617
where
17-
H: AxumHandler<T, B>,
18+
H: AxumHandler<T, S, B>,
1819
B: Send + 'static + hyper::body::HttpBody,
1920
T: 'static,
21+
S: Clone + Send + Sync + 'static,
2022
{
2123
get(handler).route_layer(middleware::from_fn(|request, next| async {
2224
request_recorder(request, next, Some("static resource")).await
2325
}))
2426
}
2527

2628
#[instrument(skip_all)]
27-
fn get_internal<H, T, B>(handler: H) -> MethodRouter<B, Infallible>
29+
fn get_internal<H, T, S, B>(handler: H) -> MethodRouter<S, B, Infallible>
2830
where
29-
H: AxumHandler<T, B>,
31+
H: AxumHandler<T, S, B>,
3032
B: Send + 'static + hyper::body::HttpBody,
3133
T: 'static,
34+
S: Clone + Send + Sync + 'static,
3235
{
3336
get(handler).route_layer(middleware::from_fn(|request, next| async {
3437
request_recorder(request, next, None).await
@@ -41,64 +44,64 @@ pub(super) fn build_axum_routes() -> AxumRouter {
4144
// must live at the site root:
4245
// https://developers.google.com/search/reference/robots_txt#handling-http-result-codes
4346
// https://support.google.com/webmasters/answer/183668?hl=en
44-
.route(
47+
.route_with_tsr(
4548
"/robots.txt",
4649
get_static(|| async { Redirect::permanent("/-/static/robots.txt") }),
4750
)
48-
.route(
51+
.route_with_tsr(
4952
"/favicon.ico",
5053
get_static(|| async { Redirect::permanent("/-/static/favicon.ico") }),
5154
)
52-
.route(
55+
.route_with_tsr(
5356
"/sitemap.xml",
5457
get_internal(super::sitemap::sitemapindex_handler),
5558
)
56-
.route(
59+
.route_with_tsr(
5760
"/-/sitemap/:letter/sitemap.xml",
5861
get_internal(super::sitemap::sitemap_handler),
5962
)
60-
.route(
63+
.route_with_tsr(
6164
"/about/builds",
6265
get_internal(super::sitemap::about_builds_handler),
6366
)
64-
.route(
67+
.route_with_tsr(
6568
"/about/metrics",
6669
get_internal(super::metrics::metrics_handler),
6770
)
68-
.route("/about", get_internal(super::sitemap::about_handler))
69-
.route(
71+
.route_with_tsr("/about", get_internal(super::sitemap::about_handler))
72+
.route_with_tsr(
7073
"/about/:subpage",
7174
get_internal(super::sitemap::about_handler),
7275
)
73-
.route(
76+
.route_with_tsr(
7477
"/releases",
7578
get_internal(super::releases::recent_releases_handler),
7679
)
77-
.route(
80+
.route_with_tsr(
7881
"/releases/recent/:page",
7982
get_internal(super::releases::recent_releases_handler),
8083
)
81-
.route(
84+
.route_with_tsr(
8285
"/releases/stars",
8386
get_internal(super::releases::releases_by_stars_handler),
8487
)
85-
.route(
88+
.route_with_tsr(
8689
"/releases/stars/:page",
8790
get_internal(super::releases::releases_by_stars_handler),
8891
)
89-
.route(
92+
.route_with_tsr(
9093
"/releases/recent-failures",
9194
get_internal(super::releases::releases_recent_failures_handler),
9295
)
93-
.route(
96+
.route_with_tsr(
9497
"/releases/recent-failures/:page",
9598
get_internal(super::releases::releases_recent_failures_handler),
9699
)
97-
.route(
100+
.route_with_tsr(
98101
"/releases/failures",
99102
get_internal(super::releases::releases_failures_by_stars_handler),
100103
)
101-
.route(
104+
.route_with_tsr(
102105
"/releases/failures/:page",
103106
get_internal(super::releases::releases_failures_by_stars_handler),
104107
)

src/web/strangler.rs

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@ use std::{
2020
task::{Context, Poll},
2121
};
2222

23-
use axum::{
24-
extract::RequestParts,
25-
http::{uri::Authority, Uri},
26-
};
23+
use axum::http::{uri::Authority, Uri};
2724
use tower_service::Service;
2825

2926
/// Service that forwards all requests to another service
@@ -33,7 +30,7 @@ use tower_service::Service;
3330
/// let strangler_svc = StranglerService::new(
3431
/// axum::http::uri::Authority::from_static("127.0.0.1:3333"),
3532
/// );
36-
/// let router = axum::Router::new().fallback(strangler_svc);
33+
/// let router = axum::Router::new().fallback_service(strangler_svc);
3734
/// axum::Server::bind(&"127.0.0.1:0".parse()?)
3835
/// .serve(router.into_make_service())
3936
/// # .with_graceful_shutdown(async {
@@ -90,13 +87,9 @@ impl Service<axum::http::Request<axum::body::Body>> for StranglerService {
9087
async fn forward_call_to_strangled(
9188
http_client: hyper::Client<hyper::client::HttpConnector>,
9289
inner: Arc<InnerStranglerService>,
93-
req: axum::http::Request<axum::body::Body>,
90+
mut req: axum::http::Request<axum::body::Body>,
9491
) -> Result<axum::response::Response, Infallible> {
9592
tracing::debug!("handling a request");
96-
let mut request_parts = RequestParts::new(req);
97-
let req: Result<axum::http::Request<axum::body::Body>, _> = request_parts.extract().await;
98-
let mut req = req.unwrap();
99-
10093
let uri: Uri = {
10194
// Not really anything to do, because this could just not be a websocket
10295
// request.
@@ -145,13 +138,13 @@ mod tests {
145138

146139
#[tokio::test]
147140
async fn can_be_used_as_fallback() {
148-
let router = Router::new().fallback(make_svc());
141+
let router = Router::new().fallback_service(make_svc());
149142
axum::Server::bind(&"0.0.0.0:0".parse().unwrap()).serve(router.into_make_service());
150143
}
151144

152145
#[tokio::test]
153146
async fn can_be_used_for_a_route() {
154-
let router = Router::new().route("/api", make_svc());
147+
let router = Router::new().route_service("/api", make_svc());
155148
axum::Server::bind(&"0.0.0.0:0".parse().unwrap()).serve(router.into_make_service());
156149
}
157150

@@ -204,7 +197,7 @@ mod tests {
204197
});
205198

206199
let background_strangler_handle = tokio::spawn(async move {
207-
let router = Router::new().fallback(strangler_svc);
200+
let router = Router::new().fallback_service(strangler_svc);
208201
axum::Server::from_tcp(strangler_tcp)
209202
.unwrap()
210203
.serve(router.into_make_service())

0 commit comments

Comments
 (0)