feat: add compression layer
ci/woodpecker/push/build Pipeline was successful Details
ci/woodpecker/push/lint Pipeline failed Details
ci/woodpecker/push/deploy Pipeline failed Details

main
Jef Roosens 2025-01-01 22:00:02 +01:00
parent 1203a34f8f
commit 1cca0d46de
No known key found for this signature in database
GPG Key ID: 21FD3D77D56BAF49
4 changed files with 58 additions and 4 deletions

View File

@ -4,7 +4,7 @@ branches:
pipeline:
build:
image: 'rust:1.69-alpine3.16'
image: 'rust:1.83-alpine3.21'
commands:
- apk add build-base
- cargo build

52
Cargo.lock generated
View File

@ -38,6 +38,35 @@ dependencies = [
"memchr",
]
[[package]]
name = "alloc-no-stdlib"
version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
[[package]]
name = "alloc-stdlib"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
dependencies = [
"alloc-no-stdlib",
]
[[package]]
name = "async-compression"
version = "0.4.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522"
dependencies = [
"brotli",
"flate2",
"futures-core",
"memchr",
"pin-project-lite",
"tokio",
]
[[package]]
name = "atomic-waker"
version = "1.1.2"
@ -179,6 +208,27 @@ version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
[[package]]
name = "brotli"
version = "7.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
"brotli-decompressor",
]
[[package]]
name = "brotli-decompressor"
version = "4.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
]
[[package]]
name = "bumpalo"
version = "3.16.0"
@ -1408,9 +1458,11 @@ version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697"
dependencies = [
"async-compression",
"base64",
"bitflags",
"bytes",
"futures-core",
"futures-util",
"http",
"http-body",

View File

@ -16,7 +16,7 @@ hyper = { version = "1.5.2" }
tokio = { version = "1.42.0", features = ["full"] }
tracing = "0.1.41"
tracing-subscriber = {version = "0.3.19", features = ["env-filter"] }
tower-http = { version = "0.6.2", features = ["fs", "trace", "auth"] }
tower-http = { version = "0.6.2", features = ["fs", "trace", "auth", "compression-br", "compression-gzip"] }
tar = "0.4.43"
flate2 = "1.0.35"
tokio-util = { version = "0.7.13", features = ["io"] }

View File

@ -13,7 +13,8 @@ use tar::Archive;
use tokio::fs::File;
use tokio_util::io::StreamReader;
use tower_http::{
services::ServeDir, trace::TraceLayer, validate_request::ValidateRequestHeaderLayer,
compression::CompressionLayer, services::ServeDir, trace::TraceLayer,
validate_request::ValidateRequestHeaderLayer,
};
use std::{
@ -50,7 +51,8 @@ pub fn app(
app = app.route(path, any(|| async { Redirect::permanent(url) }))
}
app.layer(TraceLayer::new_for_http())
app.layer(CompressionLayer::new().gzip(true).br(true))
.layer(TraceLayer::new_for_http())
}
pub async fn post_static_archive(