diff --git a/Cargo.lock b/Cargo.lock index e11bf1a..a704ba2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -56,9 +56,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "axum" -version = "0.5.4" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4af7447fc1214c1f3a1ace861d0216a6c8bb13965b64bbad9650f375b67689a" +checksum = "47594e438a243791dba58124b6669561f5baa14cb12046641d8008bf035e5a25" dependencies = [ "async-trait", "axum-core", @@ -87,9 +87,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.2.3" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bdc19781b16e32f8a7200368a336fa4509d4b72ef15dd4e41df5290855ee1e6" +checksum = "9a671c9ae99531afdd5d3ee8340b8da547779430689947144c140fc74a740244" dependencies = [ "async-trait", "bytes", @@ -176,9 +176,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.23" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39522e96686d38f4bc984b9198e3a0613264abaebaff2c5c918bfa6b6da09af" +checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" dependencies = [ "cfg-if", "crc32fast", @@ -536,11 +536,12 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.5.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b29bd4bc3f33391105ebee3589c19197c4271e3e5a9ec9bfe8127eeff8f082" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" dependencies = [ "adler", + "autocfg", ] [[package]] @@ -934,9 +935,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.18.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f48b6d60512a392e34dbf7fd456249fd2de3c83669ab642e021903f4015185b" +checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" dependencies = [ "bytes", "libc", @@ -995,9 +996,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.3.0" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79dd37121c38240c4b4fe6520332406218bbf876f2f690fe9e406020189366fd" +checksum = "aba3f3efabf7fb41fae8534fc20a817013dd1c12cb45441efb6c82e6556b4cd8" dependencies = [ "base64", "bitflags", @@ -1034,9 +1035,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.34" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09" +checksum = "4a1bdf54a7c28a2bbf701e1d2233f6c77f473486b94bee4f9678da5a148dca7f" dependencies = [ "cfg-if", "log", @@ -1079,9 +1080,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.11" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bc28f93baff38037f64e6f43d34cfa1605f27a49c34e8a04c5e78b0babf2596" +checksum = "b9df98b037d039d03400d9dd06b0f8ce05486b5f25e9a2d7d36196e142ebbc52" dependencies = [ "ansi_term", "lazy_static", @@ -1118,9 +1119,9 @@ checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "uuid" -version = "1.0.0" +version = "1.0.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cfcd319456c4d6ea10087ed423473267e1a071f3bc0aa89f80d60997843c6f0" +checksum = "bb3ab47baa004111b323696c6eaa2752e7356f7f77cf6b6dc7a2087368ce1ca4" dependencies = [ "getrandom", ] diff --git a/Cargo.toml b/Cargo.toml index 9a93848..4a78d00 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,17 +11,17 @@ name = "site" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -axum = { version = "0.5.4" } +axum = { version = "0.5.1" } hyper = { version = "0.14.18" } -tokio = { version = "1.18.0", features = ["full"] } -tracing = "0.1.34" -tracing-subscriber = {version = "0.3.11", features = ["env-filter"] } -tower-http = { version = "0.3.0", features = ["fs", "trace", "auth"] } +tokio = { version = "1.17.0", features = ["full"] } +tracing = "0.1.32" +tracing-subscriber = {version = "0.3.10", features = ["env-filter"] } +tower-http = { version = "0.2.5", features = ["fs", "trace", "auth"] } tar = "0.4.38" -flate2 = "1.0.23" +flate2 = "1.0.22" tokio-util = { version = "0.7.1", features = ["io"] } futures-util = "0.3.21" -uuid = { version = "1.0.0", features = ["v4"] } +uuid = { version = "1.0.0-alpha.1", features = ["v4"] } serde_json = "1.0.79" metrics = "0.18.1" metrics-exporter-prometheus = "0.9.0" diff --git a/rust-toolchain.toml b/rust-toolchain.toml deleted file mode 100644 index 271e97d..0000000 --- a/rust-toolchain.toml +++ /dev/null @@ -1,2 +0,0 @@ -[toolchain] -channel = "1.60" diff --git a/rustfmt.toml b/rustfmt.toml new file mode 100644 index 0000000..6e48dc7 --- /dev/null +++ b/rustfmt.toml @@ -0,0 +1,68 @@ +unstable_features = true +binop_separator = "Front" +blank_lines_lower_bound = 0 +blank_lines_upper_bound = 1 +# Trying something new +brace_style = "AlwaysNextLine" +color = "Auto" +combine_control_expr = false +comment_width = 80 +condense_wildcard_suffixes = false +control_brace_style = "AlwaysSameLine" +disable_all_formatting = false +edition = "2018" +emit_mode = "Files" +empty_item_single_line = true +enum_discrim_align_threshold = 0 +error_on_line_overflow = false +error_on_unformatted = false +fn_args_layout = "Tall" +fn_single_line = false +force_explicit_abi = true +force_multiline_blocks = false +format_code_in_doc_comments = false +format_macro_bodies = true +format_macro_matchers = false +format_strings = false +group_imports = "StdExternalCrate" +hard_tabs = false +hide_parse_errors = false +ignore = [] +imports_granularity = "Crate" +imports_indent = "Block" +imports_layout = "Mixed" +indent_style = "Block" +inline_attribute_width = 0 +license_template_path = "" +make_backup = false +match_arm_blocks = true +match_arm_leading_pipes = "Never" +match_block_trailing_comma = true +max_width = 100 +merge_derives = true +newline_style = "Auto" +normalize_comments = false +normalize_doc_attributes = false +overflow_delimited_expr = false +remove_nested_parens = true +reorder_impl_items = false +reorder_imports = true +reorder_modules = true +report_fixme = "Always" +report_todo = "Always" +skip_children = false +space_after_colon = true +space_before_colon = false +spaces_around_ranges = false +struct_field_align_threshold = 0 +struct_lit_single_line = true +tab_spaces = 4 +trailing_comma = "Vertical" +trailing_semicolon = true +type_punctuation_density = "Wide" +use_field_init_shorthand = false +use_small_heuristics = "Default" +use_try_shorthand = false +version = "One" +where_single_line = false +wrap_comments = false diff --git a/src/api/deploy.rs b/src/api/deploy.rs index aa0f28d..a88d4df 100644 --- a/src/api/deploy.rs +++ b/src/api/deploy.rs @@ -14,7 +14,8 @@ use tokio_util::io::StreamReader; use crate::{DEFAULT_STATIC_SITE, STATIC_DIR_NAME}; #[derive(Deserialize)] -pub struct StaticDirParams { +pub struct StaticDirParams +{ dir: Option, } @@ -22,7 +23,8 @@ pub async fn post_deploy( Extension(data_dir): Extension, Query(params): Query, res: BodyStream, -) -> impl IntoResponse { +) -> impl IntoResponse +{ // This converts a stream into something that implements AsyncRead, which we can then use to // asynchronously write the file to disk let mut read = @@ -54,7 +56,8 @@ pub async fn post_deploy( res } -fn process_archive(archive_path: &Path, static_dir: &Path) -> Result<(), ()> { +fn process_archive(archive_path: &Path, static_dir: &Path) -> Result<(), ()> +{ let file = std::fs::File::open(archive_path).map_err(|_| ())?; let tar = GzDecoder::new(file); let mut archive = Archive::new(tar); diff --git a/src/api/mod.rs b/src/api/mod.rs index 23fb101..c9be1c6 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -2,6 +2,7 @@ use axum::{routing::post, Router}; mod deploy; -pub fn router() -> Router { +pub fn router() -> Router +{ Router::new().route("/deploy", post(deploy::post_deploy)) } diff --git a/src/main.rs b/src/main.rs index 62074d8..a1e41a9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,7 +20,8 @@ const STATIC_DIR_NAME: &str = "static"; const DEFAULT_STATIC_SITE: &str = "default"; #[tokio::main] -async fn main() { +async fn main() +{ // Enable tracing tracing_subscriber::registry() .with(tracing_subscriber::EnvFilter::new( diff --git a/src/matrix.rs b/src/matrix.rs index 0222195..00e984a 100644 --- a/src/matrix.rs +++ b/src/matrix.rs @@ -1,16 +1,19 @@ use axum::{response::IntoResponse, routing::get, Json, Router}; use serde_json::json; -pub fn router() -> Router { +pub fn router() -> Router +{ Router::new() .route("/.well-known/matrix/server", get(get_matrix_server)) .route("/.well-known/matrix/client", get(get_matrix_client)) } -async fn get_matrix_server() -> impl IntoResponse { +async fn get_matrix_server() -> impl IntoResponse +{ Json(json!({"m.server": "matrix.rustybever.be:443"})) } -async fn get_matrix_client() -> impl IntoResponse { +async fn get_matrix_client() -> impl IntoResponse +{ Json(json!({"m.homeserver": {"base_url": "https://matrix.rustybever.be"}})) } diff --git a/src/metrics.rs b/src/metrics.rs index 21cf5e0..076aa70 100644 --- a/src/metrics.rs +++ b/src/metrics.rs @@ -3,7 +3,8 @@ use std::time::Instant; use axum::{extract::MatchedPath, http::Request, middleware::Next, response::IntoResponse}; use metrics_exporter_prometheus::{Matcher, PrometheusBuilder, PrometheusHandle}; -pub fn setup_metrics_recorder() -> PrometheusHandle { +pub fn setup_metrics_recorder() -> PrometheusHandle +{ const EXPONENTIAL_SECONDS: &[f64] = &[ 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1.0, 2.5, 5.0, 10.0, ]; @@ -19,7 +20,8 @@ pub fn setup_metrics_recorder() -> PrometheusHandle { } // Taken from the examples section -pub async fn track_metrics(req: Request, next: Next) -> impl IntoResponse { +pub async fn track_metrics(req: Request, next: Next) -> impl IntoResponse +{ let start = Instant::now(); let path = if let Some(matched_path) = req.extensions().get::() { matched_path.as_str().to_owned()