diff --git a/Cargo.lock b/Cargo.lock index 370046c76..17b06bb3d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -83,6 +83,20 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "actix-middleware-etag" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf947271526f363aba604e2a735fb2792f63768c6ebdd06a30bf6df74a5ba06c" +dependencies = [ + "actix-service", + "actix-web", + "base64 0.22.1", + "futures", + "str-buf", + "xxhash-rust", +] + [[package]] name = "actix-router" version = "0.5.3" @@ -3343,6 +3357,7 @@ version = "0.17.0" dependencies = [ "actix-cors", "actix-http", + "actix-middleware-etag", "actix-rt", "actix-web", "actix-web-static-files", @@ -5607,6 +5622,12 @@ dependencies = [ "path-slash", ] +[[package]] +name = "str-buf" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ceb97b7225c713c2fd4db0153cb6b3cab244eb37900c3f634ed4d43310d8c34" + [[package]] name = "str_stack" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index facffc9cc..d18dbd841 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,6 +28,7 @@ struct_field_names = "allow" [workspace.dependencies] actix-cors = "0.7" actix-http = "3" +actix-middleware-etag = "0.4.4" actix-rt = "2" actix-web = "4" actix-web-static-files = "4" diff --git a/martin/Cargo.toml b/martin/Cargo.toml index 9b1a0d2ff..f23a8932f 100644 --- a/martin/Cargo.toml +++ b/martin/Cargo.toml @@ -67,6 +67,7 @@ bless-tests = [] [dependencies] actix-cors.workspace = true actix-http.workspace = true +actix-middleware-etag.workspace = true actix-rt.workspace = true actix-web-static-files = { workspace = true, optional = true } actix-web.workspace = true diff --git a/martin/src/srv/fonts.rs b/martin/src/srv/fonts.rs index 8056be1a9..d184b9bb9 100644 --- a/martin/src/srv/fonts.rs +++ b/martin/src/srv/fonts.rs @@ -1,8 +1,10 @@ use std::string::ToString; +use actix_middleware_etag::Etag; use actix_web::error::{ErrorBadRequest, ErrorNotFound}; +use actix_web::middleware::Compress; use actix_web::web::{Data, Path}; -use actix_web::{HttpResponse, Result as ActixResult, middleware, route}; +use actix_web::{HttpResponse, Result as ActixResult, route}; use serde::Deserialize; use crate::fonts::{FontError, FontSources}; @@ -18,7 +20,8 @@ struct FontRequest { #[route( "/font/{fontstack}/{start}-{end}", method = "GET", - wrap = "middleware::Compress::default()" + wrap = "Etag", + wrap = "Compress::default()" )] #[allow(clippy::unused_async)] async fn get_font(path: Path, fonts: Data) -> ActixResult { diff --git a/martin/src/srv/server.rs b/martin/src/srv/server.rs index acb977fe2..2f6edc024 100644 --- a/martin/src/srv/server.rs +++ b/martin/src/srv/server.rs @@ -6,9 +6,9 @@ use std::time::Duration; use actix_cors::Cors; use actix_web::error::ErrorInternalServerError; use actix_web::http::header::CACHE_CONTROL; -use actix_web::middleware::TrailingSlash; +use actix_web::middleware::{Compress, Logger, NormalizePath, TrailingSlash}; use actix_web::web::Data; -use actix_web::{App, HttpResponse, HttpServer, Responder, middleware, route, web}; +use actix_web::{App, HttpResponse, HttpServer, Responder, route, web}; use futures::TryFutureExt; #[cfg(feature = "lambda")] use lambda_web::{is_running_on_lambda, run_actix_on_lambda}; @@ -105,7 +105,7 @@ async fn get_health() -> impl Responder { "/catalog", method = "GET", method = "HEAD", - wrap = "middleware::Compress::default()" + wrap = "Compress::default()" )] #[allow(clippy::unused_async)] async fn get_catalog(catalog: Data) -> impl Responder { @@ -182,8 +182,8 @@ pub fn new_server(config: SrvConfig, state: ServerState) -> MartinResult<(Server app.app_data(Data::new(catalog.clone())) .app_data(Data::new(config.clone())) .wrap(cors_middleware) - .wrap(middleware::NormalizePath::new(TrailingSlash::MergeOnly)) - .wrap(middleware::Logger::default()) + .wrap(NormalizePath::new(TrailingSlash::MergeOnly)) + .wrap(Logger::default()) .configure(|c| router(c, &config)) }; diff --git a/martin/src/srv/sprites.rs b/martin/src/srv/sprites.rs index a8cb32564..2eb5598e9 100644 --- a/martin/src/srv/sprites.rs +++ b/martin/src/srv/sprites.rs @@ -1,16 +1,23 @@ use std::string::ToString; +use actix_middleware_etag::Etag; use actix_web::error::ErrorNotFound; use actix_web::http::header::ContentType; +use actix_web::middleware::Compress; use actix_web::web::{Data, Path}; -use actix_web::{HttpResponse, Result as ActixResult, middleware, route}; +use actix_web::{HttpResponse, Result as ActixResult, route}; use spreet::Spritesheet; use crate::sprites::{SpriteError, SpriteSources}; use crate::srv::SourceIDsRequest; use crate::srv::server::map_internal_error; -#[route("/sprite/{source_ids}.png", method = "GET", method = "HEAD")] +#[route( + "/sprite/{source_ids}.png", + method = "GET", + method = "HEAD", + wrap = "Etag" +)] async fn get_sprite_png( path: Path, sprites: Data, @@ -21,7 +28,12 @@ async fn get_sprite_png( .body(sheet.encode_png().map_err(map_internal_error)?)) } -#[route("/sdf_sprite/{source_ids}.png", method = "GET", method = "HEAD")] +#[route( + "/sdf_sprite/{source_ids}.png", + method = "GET", + method = "HEAD", + wrap = "Etag" +)] async fn get_sprite_sdf_png( path: Path, sprites: Data, @@ -36,7 +48,8 @@ async fn get_sprite_sdf_png( "/sprite/{source_ids}.json", method = "GET", method = "HEAD", - wrap = "middleware::Compress::default()" + wrap = "Etag", + wrap = "Compress::default()" )] async fn get_sprite_json( path: Path, @@ -50,7 +63,8 @@ async fn get_sprite_json( "/sdf_sprite/{source_ids}.json", method = "GET", method = "HEAD", - wrap = "middleware::Compress::default()" + wrap = "Etag", + wrap = "Compress::default()" )] async fn get_sprite_sdf_json( path: Path, diff --git a/martin/src/srv/styles.rs b/martin/src/srv/styles.rs index be2b297be..e4b987486 100644 --- a/martin/src/srv/styles.rs +++ b/martin/src/srv/styles.rs @@ -1,6 +1,8 @@ +use actix_middleware_etag::Etag; use actix_web::http::header::ContentType; +use actix_web::middleware::Compress; use actix_web::web::{Data, Path}; -use actix_web::{HttpResponse, middleware, route}; +use actix_web::{HttpResponse, route}; use log::error; use serde::Deserialize; @@ -14,7 +16,8 @@ struct StyleRequest { #[route( "/style/{style_id}", method = "GET", - wrap = "middleware::Compress::default()" + wrap = "Etag", + wrap = "Compress::default()" )] async fn get_style_json(path: Path, styles: Data) -> HttpResponse { let style_id = &path.style_id; diff --git a/martin/src/srv/tiles_info.rs b/martin/src/srv/tiles_info.rs index 9d0d97ae9..17e4c2560 100644 --- a/martin/src/srv/tiles_info.rs +++ b/martin/src/srv/tiles_info.rs @@ -1,9 +1,11 @@ use std::string::ToString; +use actix_middleware_etag::Etag; use actix_web::error::ErrorBadRequest; use actix_web::http::Uri; +use actix_web::middleware::Compress; use actix_web::web::{Data, Path}; -use actix_web::{HttpRequest, HttpResponse, Result as ActixResult, middleware, route}; +use actix_web::{HttpRequest, HttpResponse, Result as ActixResult, route}; use itertools::Itertools as _; use serde::Deserialize; use tilejson::{TileJSON, tilejson}; @@ -20,7 +22,8 @@ pub struct SourceIDsRequest { "/{source_ids}", method = "GET", method = "HEAD", - wrap = "middleware::Compress::default()" + wrap = "Etag", + wrap = "Compress::default()" )] #[allow(clippy::unused_async)] async fn get_source_info( diff --git a/tests/expected/auto/catalog_auto.json.headers b/tests/expected/auto/catalog_auto.json.headers new file mode 100644 index 000000000..4be482306 --- /dev/null +++ b/tests/expected/auto/catalog_auto.json.headers @@ -0,0 +1,4 @@ +content-encoding: br +content-type: application/json +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/cmp.json.headers b/tests/expected/auto/cmp.json.headers new file mode 100644 index 000000000..c7b802f10 --- /dev/null +++ b/tests/expected/auto/cmp.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"1a7-SKz0jISgY5NokLA90cn9bQ==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/cmp_0_0_0.pbf.headers b/tests/expected/auto/cmp_0_0_0.pbf.headers new file mode 100644 index 000000000..29e2fde02 --- /dev/null +++ b/tests/expected/auto/cmp_0_0_0.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 1150 +content-type: application/x-protobuf +etag: "293815559851244067215006259112061301509" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/cmp_12_3673_1911.pbf.headers b/tests/expected/auto/cmp_12_3673_1911.pbf.headers new file mode 100644 index 000000000..099b66d9e --- /dev/null +++ b/tests/expected/auto/cmp_12_3673_1911.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 228 +content-type: application/x-protobuf +etag: "65126464844181472926168475650420052208" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/cmp_13_7346_3822.pbf.headers b/tests/expected/auto/cmp_13_7346_3822.pbf.headers new file mode 100644 index 000000000..55d476c17 --- /dev/null +++ b/tests/expected/auto/cmp_13_7346_3822.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 229 +content-type: application/x-protobuf +etag: "285993515030094388663176915274199952144" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/cmp_14_14692_7645.pbf.headers b/tests/expected/auto/cmp_14_14692_7645.pbf.headers new file mode 100644 index 000000000..a169ee81d --- /dev/null +++ b/tests/expected/auto/cmp_14_14692_7645.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 241 +content-type: application/x-protobuf +etag: "311485364959417352099842717473316722909" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/cmp_17_117542_61161.pbf.headers b/tests/expected/auto/cmp_17_117542_61161.pbf.headers new file mode 100644 index 000000000..bd690c065 --- /dev/null +++ b/tests/expected/auto/cmp_17_117542_61161.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 253 +content-type: application/x-protobuf +etag: "45271956850074002467276433108641392681" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/cmp_18_235085_122323.pbf.headers b/tests/expected/auto/cmp_18_235085_122323.pbf.headers new file mode 100644 index 000000000..d4a545f8b --- /dev/null +++ b/tests/expected/auto/cmp_18_235085_122323.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 255 +content-type: application/x-protobuf +etag: "27476821680655535149048155649476331810" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/cmp_6_57_29.pbf.headers b/tests/expected/auto/cmp_6_57_29.pbf.headers new file mode 100644 index 000000000..5d9343490 --- /dev/null +++ b/tests/expected/auto/cmp_6_57_29.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 181 +content-type: application/x-protobuf +etag: "318858893996331708671731244488057597244" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc.json.headers b/tests/expected/auto/fnc.json.headers new file mode 100644 index 000000000..0fb16de3e --- /dev/null +++ b/tests/expected/auto/fnc.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"85-6Q4dOREWZNsdPdT5r-Pjvg==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_0_0_0.pbf.headers b/tests/expected/auto/fnc_0_0_0.pbf.headers new file mode 100644 index 000000000..d2c86077a --- /dev/null +++ b/tests/expected/auto/fnc_0_0_0.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 546 +content-type: application/x-protobuf +etag: "50104397035412006126955407492289337352" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_12_3673_1911.pbf.headers b/tests/expected/auto/fnc_12_3673_1911.pbf.headers new file mode 100644 index 000000000..701fe1c91 --- /dev/null +++ b/tests/expected/auto/fnc_12_3673_1911.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 131 +content-type: application/x-protobuf +etag: "316036929976559733097913904358871580694" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_13_7346_3822.pbf.headers b/tests/expected/auto/fnc_13_7346_3822.pbf.headers new file mode 100644 index 000000000..24b02a0c8 --- /dev/null +++ b/tests/expected/auto/fnc_13_7346_3822.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 133 +content-type: application/x-protobuf +etag: "186991199734742473829029472341770943562" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_14_14692_7645.pbf.headers b/tests/expected/auto/fnc_14_14692_7645.pbf.headers new file mode 100644 index 000000000..efddcf4ce --- /dev/null +++ b/tests/expected/auto/fnc_14_14692_7645.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 141 +content-type: application/x-protobuf +etag: "270799230191288586610033918771820004719" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_17_117542_61161.pbf.headers b/tests/expected/auto/fnc_17_117542_61161.pbf.headers new file mode 100644 index 000000000..5b92d2df8 --- /dev/null +++ b/tests/expected/auto/fnc_17_117542_61161.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 146 +content-type: application/x-protobuf +etag: "59732876737746661838673831051212271461" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_18_235085_122323.pbf.headers b/tests/expected/auto/fnc_18_235085_122323.pbf.headers new file mode 100644 index 000000000..71a629bc0 --- /dev/null +++ b/tests/expected/auto/fnc_18_235085_122323.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 150 +content-type: application/x-protobuf +etag: "188910840057561700607644193135209710567" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_6_57_29.pbf.headers b/tests/expected/auto/fnc_6_57_29.pbf.headers new file mode 100644 index 000000000..55efe6c9d --- /dev/null +++ b/tests/expected/auto/fnc_6_57_29.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 106 +content-type: application/x-protobuf +etag: "148595474743525054411317108796671227677" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_b.json.headers b/tests/expected/auto/fnc_b.json.headers new file mode 100644 index 000000000..f279f938e --- /dev/null +++ b/tests/expected/auto/fnc_b.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"ad-WumWK2dl9zyB9VKNT00Jkg==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_b_6_38_20.pbf.headers b/tests/expected/auto/fnc_b_6_38_20.pbf.headers new file mode 100644 index 000000000..ed0ddab5d --- /dev/null +++ b/tests/expected/auto/fnc_b_6_38_20.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 110 +content-type: application/x-protobuf +etag: "339404027429166108039741083243940146201" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_comment.json.headers b/tests/expected/auto/fnc_comment.json.headers new file mode 100644 index 000000000..1643547c4 --- /dev/null +++ b/tests/expected/auto/fnc_comment.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"102-6tbS_Y0ey_fK7fkhJd4WKQ==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_token.json.headers b/tests/expected/auto/fnc_token.json.headers new file mode 100644 index 000000000..cdcaf36ce --- /dev/null +++ b/tests/expected/auto/fnc_token.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"aa-aH357MWBb3myW2xPJ6n6iw==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_token_0_0_0.pbf.headers b/tests/expected/auto/fnc_token_0_0_0.pbf.headers new file mode 100644 index 000000000..5828a802e --- /dev/null +++ b/tests/expected/auto/fnc_token_0_0_0.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 551 +content-type: application/x-protobuf +etag: "197420765542523001088152476290493617488" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_zoom_xy_6_57_29.pbf.headers b/tests/expected/auto/fnc_zoom_xy_6_57_29.pbf.headers new file mode 100644 index 000000000..31413f77c --- /dev/null +++ b/tests/expected/auto/fnc_zoom_xy_6_57_29.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 104 +content-type: application/x-protobuf +etag: "313925108765747031844863332687426553785" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_zxy2_6_57_29.pbf.headers b/tests/expected/auto/fnc_zxy2_6_57_29.pbf.headers new file mode 100644 index 000000000..7c9d178df --- /dev/null +++ b/tests/expected/auto/fnc_zxy2_6_57_29.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 103 +content-type: application/x-protobuf +etag: "134723745777099237261560614323384911032" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_zxy_6_57_29.pbf.headers b/tests/expected/auto/fnc_zxy_6_57_29.pbf.headers new file mode 100644 index 000000000..d1615e99a --- /dev/null +++ b/tests/expected/auto/fnc_zxy_6_57_29.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 101 +content-type: application/x-protobuf +etag: "234076532504863321998415269051837419664" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_zxy_query_6_57_29.pbf.headers b/tests/expected/auto/fnc_zxy_query_6_57_29.pbf.headers new file mode 100644 index 000000000..55efe6c9d --- /dev/null +++ b/tests/expected/auto/fnc_zxy_query_6_57_29.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 106 +content-type: application/x-protobuf +etag: "148595474743525054411317108796671227677" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_zxy_row2_6_57_29.pbf.headers b/tests/expected/auto/fnc_zxy_row2_6_57_29.pbf.headers new file mode 100644 index 000000000..6c08c58ff --- /dev/null +++ b/tests/expected/auto/fnc_zxy_row2_6_57_29.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 115 +content-type: application/x-protobuf +etag: "205494963574970857606832668009198552781" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_zxy_row_6_57_29.pbf.headers b/tests/expected/auto/fnc_zxy_row_6_57_29.pbf.headers new file mode 100644 index 000000000..b6b409b38 --- /dev/null +++ b/tests/expected/auto/fnc_zxy_row_6_57_29.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 107 +content-type: application/x-protobuf +etag: "133204562788894152562072143322114701432" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/fnc_zxy_row_key_6_57_29.pbf.headers b/tests/expected/auto/fnc_zxy_row_key_6_57_29.pbf.headers new file mode 100644 index 000000000..476a276eb --- /dev/null +++ b/tests/expected/auto/fnc_zxy_row_key_6_57_29.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 107 +content-type: application/x-protobuf +etag: "18077437226671957325453576147625224838" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/mb_jpg.json.headers b/tests/expected/auto/mb_jpg.json.headers new file mode 100644 index 000000000..ff7bb356f --- /dev/null +++ b/tests/expected/auto/mb_jpg.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"31fe-1IOZwmkS4fjYIp-JzMoTpA==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/mb_jpg_0_0_0.jpg.headers b/tests/expected/auto/mb_jpg_0_0_0.jpg.headers new file mode 100644 index 000000000..0a11eb80d --- /dev/null +++ b/tests/expected/auto/mb_jpg_0_0_0.jpg.headers @@ -0,0 +1,4 @@ +content-length: 22142 +content-type: image/jpeg +etag: "80104354369725283657331287868672010947" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/mb_mvt.json.headers b/tests/expected/auto/mb_mvt.json.headers new file mode 100644 index 000000000..5f614c645 --- /dev/null +++ b/tests/expected/auto/mb_mvt.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"1a3-AgILNjTcvIE3t7rN3x0S0Q==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/mb_mvt_2_3_1.pbf.headers b/tests/expected/auto/mb_mvt_2_3_1.pbf.headers new file mode 100644 index 000000000..64544148a --- /dev/null +++ b/tests/expected/auto/mb_mvt_2_3_1.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 263 +content-type: application/x-protobuf +etag: "271488406274339672223474380565368146077" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/mb_png.json.headers b/tests/expected/auto/mb_png.json.headers new file mode 100644 index 000000000..6d69cc7e8 --- /dev/null +++ b/tests/expected/auto/mb_png.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"3214-OmIr3Ec0hZORLhvVAfcjXg==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/mb_png_0_0_0.png.headers b/tests/expected/auto/mb_png_0_0_0.png.headers new file mode 100644 index 000000000..55026e76b --- /dev/null +++ b/tests/expected/auto/mb_png_0_0_0.png.headers @@ -0,0 +1,4 @@ +content-length: 21246 +content-type: image/png +etag: "198224485858177844679225803711953162005" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/pmt.json.headers b/tests/expected/auto/pmt.json.headers new file mode 100644 index 000000000..2ede2f78a --- /dev/null +++ b/tests/expected/auto/pmt.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"b5-iGXOSKeGzUc1iuu-TdN9rg==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/pmt_3_4_2.png.headers b/tests/expected/auto/pmt_3_4_2.png.headers new file mode 100644 index 000000000..591af987e --- /dev/null +++ b/tests/expected/auto/pmt_3_4_2.png.headers @@ -0,0 +1,4 @@ +content-length: 24475 +content-type: image/png +etag: "183528903823100539089486478518670939939" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/points3857_srid.json.headers b/tests/expected/auto/points3857_srid.json.headers new file mode 100644 index 000000000..6059e3b29 --- /dev/null +++ b/tests/expected/auto/points3857_srid.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"11c-4GaQ__e5mrlIrmds-0KbWA==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/points3857_srid_0_0_0.pbf.headers b/tests/expected/auto/points3857_srid_0_0_0.pbf.headers new file mode 100644 index 000000000..8adb1bf99 --- /dev/null +++ b/tests/expected/auto/points3857_srid_0_0_0.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 339 +content-type: application/x-protobuf +etag: "335534992707089786783362253468276926462" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/points_empty_srid_0_0_0.pbf.headers b/tests/expected/auto/points_empty_srid_0_0_0.pbf.headers new file mode 100644 index 000000000..1c2ae0ae2 --- /dev/null +++ b/tests/expected/auto/points_empty_srid_0_0_0.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 351 +content-type: application/x-protobuf +etag: "90067240564968210473015739826054346984" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/rgb_u8.json.headers b/tests/expected/auto/rgb_u8.json.headers new file mode 100644 index 000000000..0637be813 --- /dev/null +++ b/tests/expected/auto/rgb_u8.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"61-IE-cuTwRcHu2Y_TNihoCYQ==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/rgb_u8_0_0_0.png.headers b/tests/expected/auto/rgb_u8_0_0_0.png.headers new file mode 100644 index 000000000..99aa77a8a --- /dev/null +++ b/tests/expected/auto/rgb_u8_0_0_0.png.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 1465 +content-type: image/png +etag: "91976870190390495135239397880759423411" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/rgb_u8_3_0_0.png.headers b/tests/expected/auto/rgb_u8_3_0_0.png.headers new file mode 100644 index 000000000..764477152 --- /dev/null +++ b/tests/expected/auto/rgb_u8_3_0_0.png.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 26676 +content-type: image/png +etag: "152292509766006539164689338463649870217" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/rgb_u8_3_1_1.png.headers b/tests/expected/auto/rgb_u8_3_1_1.png.headers new file mode 100644 index 000000000..da330a665 --- /dev/null +++ b/tests/expected/auto/rgb_u8_3_1_1.png.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 294 +content-type: image/png +etag: "183196322924765665630178019653551670231" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/rgba_u8.json.headers b/tests/expected/auto/rgba_u8.json.headers new file mode 100644 index 000000000..14faf7f9e --- /dev/null +++ b/tests/expected/auto/rgba_u8.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"62-BrVv6ZXdmCdQ_wrDTr0tSw==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/rgba_u8_0_0_0.png.headers b/tests/expected/auto/rgba_u8_0_0_0.png.headers new file mode 100644 index 000000000..99aa77a8a --- /dev/null +++ b/tests/expected/auto/rgba_u8_0_0_0.png.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 1465 +content-type: image/png +etag: "91976870190390495135239397880759423411" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/rgba_u8_3_0_0.png.headers b/tests/expected/auto/rgba_u8_3_0_0.png.headers new file mode 100644 index 000000000..764477152 --- /dev/null +++ b/tests/expected/auto/rgba_u8_3_0_0.png.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 26676 +content-type: image/png +etag: "152292509766006539164689338463649870217" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/rgba_u8_3_1_1.png.headers b/tests/expected/auto/rgba_u8_3_1_1.png.headers new file mode 100644 index 000000000..da330a665 --- /dev/null +++ b/tests/expected/auto/rgba_u8_3_1_1.png.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 294 +content-type: image/png +etag: "183196322924765665630178019653551670231" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/rgba_u8_nodata.json.headers b/tests/expected/auto/rgba_u8_nodata.json.headers new file mode 100644 index 000000000..4c5a243e3 --- /dev/null +++ b/tests/expected/auto/rgba_u8_nodata.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"69-f7ZqJowAoXXdyYxlTrEd6g==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/rgba_u8_nodata_0_0_0.png.headers b/tests/expected/auto/rgba_u8_nodata_0_0_0.png.headers new file mode 100644 index 000000000..367bc9d7d --- /dev/null +++ b/tests/expected/auto/rgba_u8_nodata_0_0_0.png.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 4183 +content-type: image/png +etag: "175670914983401421558985743183658650265" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/rgba_u8_nodata_1_0_0.png.headers b/tests/expected/auto/rgba_u8_nodata_1_0_0.png.headers new file mode 100644 index 000000000..7379f9081 --- /dev/null +++ b/tests/expected/auto/rgba_u8_nodata_1_0_0.png.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 12297 +content-type: image/png +etag: "275838721038394963229380057336169680030" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/s3_1_0_0.pbf.headers b/tests/expected/auto/s3_1_0_0.pbf.headers new file mode 100644 index 000000000..15c59f589 --- /dev/null +++ b/tests/expected/auto/s3_1_0_0.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 215320 +content-type: application/x-protobuf +etag: "90893510347658296425614750151245557991" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/table_source.json.headers b/tests/expected/auto/table_source.json.headers new file mode 100644 index 000000000..2da589faa --- /dev/null +++ b/tests/expected/auto/table_source.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"e6-fbngdmxBgtzD9fRcDwLqMA==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/tbl_0_0_0.pbf.headers b/tests/expected/auto/tbl_0_0_0.pbf.headers new file mode 100644 index 000000000..d25a9c019 --- /dev/null +++ b/tests/expected/auto/tbl_0_0_0.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 643 +content-type: application/x-protobuf +etag: "318577514554804226527507038699986111507" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/tbl_12_3673_1911.pbf.headers b/tests/expected/auto/tbl_12_3673_1911.pbf.headers new file mode 100644 index 000000000..b0002e8a4 --- /dev/null +++ b/tests/expected/auto/tbl_12_3673_1911.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 166 +content-type: application/x-protobuf +etag: "165500331794974714696813048024659138693" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/tbl_13_7346_3822.pbf.headers b/tests/expected/auto/tbl_13_7346_3822.pbf.headers new file mode 100644 index 000000000..51261abb3 --- /dev/null +++ b/tests/expected/auto/tbl_13_7346_3822.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 171 +content-type: application/x-protobuf +etag: "182700208357754381587588584330146829039" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/tbl_14_14692_7645.pbf.headers b/tests/expected/auto/tbl_14_14692_7645.pbf.headers new file mode 100644 index 000000000..4a4279a0b --- /dev/null +++ b/tests/expected/auto/tbl_14_14692_7645.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 178 +content-type: application/x-protobuf +etag: "117583176155265660497702615009162345318" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/tbl_17_117542_61161.pbf.headers b/tests/expected/auto/tbl_17_117542_61161.pbf.headers new file mode 100644 index 000000000..af77188e9 --- /dev/null +++ b/tests/expected/auto/tbl_17_117542_61161.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 182 +content-type: application/x-protobuf +etag: "23665348455771460600771393648920396528" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/tbl_18_235085_122323.pbf.headers b/tests/expected/auto/tbl_18_235085_122323.pbf.headers new file mode 100644 index 000000000..53e4f5359 --- /dev/null +++ b/tests/expected/auto/tbl_18_235085_122323.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 181 +content-type: application/x-protobuf +etag: "33647617359663494862827377733789484216" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/tbl_6_57_29.pbf.headers b/tests/expected/auto/tbl_6_57_29.pbf.headers new file mode 100644 index 000000000..bb64cef77 --- /dev/null +++ b/tests/expected/auto/tbl_6_57_29.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 138 +content-type: application/x-protobuf +etag: "198829004322648368710297325251207900127" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/tbl_comment.json.headers b/tests/expected/auto/tbl_comment.json.headers new file mode 100644 index 000000000..8e3e93972 --- /dev/null +++ b/tests/expected/auto/tbl_comment.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"136-lHzPvh-7gSnjgJnd-2ctzQ==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto/webp2_1_0_0.png.headers b/tests/expected/auto/webp2_1_0_0.png.headers new file mode 100644 index 000000000..8eca48cfd --- /dev/null +++ b/tests/expected/auto/webp2_1_0_0.png.headers @@ -0,0 +1,4 @@ +content-length: 10658 +content-type: image/webp +etag: "13022905490801985056512160688182263905" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/auto_mini/catalog_auto.json.headers b/tests/expected/auto_mini/catalog_auto.json.headers new file mode 100644 index 000000000..4be482306 --- /dev/null +++ b/tests/expected/auto_mini/catalog_auto.json.headers @@ -0,0 +1,4 @@ +content-encoding: br +content-type: application/json +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/catalog_cfg.json.headers b/tests/expected/configured/catalog_cfg.json.headers new file mode 100644 index 000000000..4be482306 --- /dev/null +++ b/tests/expected/configured/catalog_cfg.json.headers @@ -0,0 +1,4 @@ +content-encoding: br +content-type: application/json +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/cmp.json.headers b/tests/expected/configured/cmp.json.headers new file mode 100644 index 000000000..2a150798b --- /dev/null +++ b/tests/expected/configured/cmp.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"188-1_yQANTYBHv0kaBoGJCqKQ==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/cmp_0_0_0.pbf.headers b/tests/expected/configured/cmp_0_0_0.pbf.headers new file mode 100644 index 000000000..2a625c0bd --- /dev/null +++ b/tests/expected/configured/cmp_0_0_0.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 576 +content-type: application/x-protobuf +etag: "176859989575845169917449959758474492937" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/fnc2_0_0_0.pbf.headers b/tests/expected/configured/fnc2_0_0_0.pbf.headers new file mode 100644 index 000000000..5828a802e --- /dev/null +++ b/tests/expected/configured/fnc2_0_0_0.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 551 +content-type: application/x-protobuf +etag: "197420765542523001088152476290493617488" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/fnc_0_0_0.pbf.headers b/tests/expected/configured/fnc_0_0_0.pbf.headers new file mode 100644 index 000000000..d2c86077a --- /dev/null +++ b/tests/expected/configured/fnc_0_0_0.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 546 +content-type: application/x-protobuf +etag: "50104397035412006126955407492289337352" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/fnc_comment_cfg.json.headers b/tests/expected/configured/fnc_comment_cfg.json.headers new file mode 100644 index 000000000..a0e39c305 --- /dev/null +++ b/tests/expected/configured/fnc_comment_cfg.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"f8-Q_61CSCILe6RIhIWzTvf_Q==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/font_1.pbf.headers b/tests/expected/configured/font_1.pbf.headers new file mode 100644 index 000000000..2ca7325ff --- /dev/null +++ b/tests/expected/configured/font_1.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/x-protobuf +etag: W/"130b6-leolMlz39eG1OisHJXWcdA==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/font_2.pbf.headers b/tests/expected/configured/font_2.pbf.headers new file mode 100644 index 000000000..94ea48934 --- /dev/null +++ b/tests/expected/configured/font_2.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/x-protobuf +etag: W/"13762-12Po9LfxnAVc5cwSQZI0Bg==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/font_3.pbf.headers b/tests/expected/configured/font_3.pbf.headers new file mode 100644 index 000000000..94ea48934 --- /dev/null +++ b/tests/expected/configured/font_3.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/x-protobuf +etag: W/"13762-12Po9LfxnAVc5cwSQZI0Bg==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/pmt2_0_0_0.png.headers b/tests/expected/configured/pmt2_0_0_0.png.headers new file mode 100644 index 000000000..7178577a0 --- /dev/null +++ b/tests/expected/configured/pmt2_0_0_0.png.headers @@ -0,0 +1,4 @@ +content-length: 11586 +content-type: image/webp +etag: "319069140686520200453324848169489853378" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/pmt_0_0_0.png.headers b/tests/expected/configured/pmt_0_0_0.png.headers new file mode 100644 index 000000000..ca3b40b80 --- /dev/null +++ b/tests/expected/configured/pmt_0_0_0.png.headers @@ -0,0 +1,4 @@ +content-length: 18404 +content-type: image/png +etag: "109615783887137800409763947330857640552" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/sdf_spr_cmp.json.headers b/tests/expected/configured/sdf_spr_cmp.json.headers new file mode 100644 index 000000000..803efb201 --- /dev/null +++ b/tests/expected/configured/sdf_spr_cmp.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"131-s95fKXweVNtXjVXT7l2oHQ==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/sdf_spr_cmp.png.headers b/tests/expected/configured/sdf_spr_cmp.png.headers new file mode 100644 index 000000000..b515e6eac --- /dev/null +++ b/tests/expected/configured/sdf_spr_cmp.png.headers @@ -0,0 +1,4 @@ +content-length: 945 +content-type: image/png +etag: W/"3b1-qyh8Bev0R5Z2fLn83grsPw==" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/sdf_spr_cmp_2.json.headers b/tests/expected/configured/sdf_spr_cmp_2.json.headers new file mode 100644 index 000000000..efa538335 --- /dev/null +++ b/tests/expected/configured/sdf_spr_cmp_2.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"131-Bjo8hrRKhIMOqK572ImviA==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/sdf_spr_cmp_2.png.headers b/tests/expected/configured/sdf_spr_cmp_2.png.headers new file mode 100644 index 000000000..58e57f8c7 --- /dev/null +++ b/tests/expected/configured/sdf_spr_cmp_2.png.headers @@ -0,0 +1,4 @@ +content-length: 1863 +content-type: image/png +etag: W/"747-uY5SJOmaA0qgk9TmFw54yw==" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/sdf_spr_mysrc.json.headers b/tests/expected/configured/sdf_spr_mysrc.json.headers new file mode 100644 index 000000000..184e8b2a2 --- /dev/null +++ b/tests/expected/configured/sdf_spr_mysrc.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"4a-2PGKEoQ361taeiNAqH1Hyg==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/sdf_spr_mysrc.png.headers b/tests/expected/configured/sdf_spr_mysrc.png.headers new file mode 100644 index 000000000..e3af18d38 --- /dev/null +++ b/tests/expected/configured/sdf_spr_mysrc.png.headers @@ -0,0 +1,4 @@ +content-length: 675 +content-type: image/png +etag: W/"2a3-ju0zA7FbYbeaqMM_Qg1Iqg==" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/sdf_spr_src1.json.headers b/tests/expected/configured/sdf_spr_src1.json.headers new file mode 100644 index 000000000..4cb8d015a --- /dev/null +++ b/tests/expected/configured/sdf_spr_src1.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"e7-7ie4iOXghXewTq4x5OKswg==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/sdf_spr_src1.png.headers b/tests/expected/configured/sdf_spr_src1.png.headers new file mode 100644 index 000000000..10b72ab21 --- /dev/null +++ b/tests/expected/configured/sdf_spr_src1.png.headers @@ -0,0 +1,4 @@ +content-length: 900 +content-type: image/png +etag: W/"384-m3iOSdyLqIRO-1uu8tzIcw==" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/sdf_spr_src1_.json.headers b/tests/expected/configured/sdf_spr_src1_.json.headers new file mode 100644 index 000000000..7e81daf57 --- /dev/null +++ b/tests/expected/configured/sdf_spr_src1_.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"e6-IQNV1VuPkoio6olHvfumfg==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/sdf_spr_src1_.png.headers b/tests/expected/configured/sdf_spr_src1_.png.headers new file mode 100644 index 000000000..778e00063 --- /dev/null +++ b/tests/expected/configured/sdf_spr_src1_.png.headers @@ -0,0 +1,4 @@ +content-length: 1699 +content-type: image/png +etag: W/"6a3-NdhmitklvJKSk_7phaxquw==" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/spr_cmp.json.headers b/tests/expected/configured/spr_cmp.json.headers new file mode 100644 index 000000000..098415e06 --- /dev/null +++ b/tests/expected/configured/spr_cmp.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"106-vO62JYCAMTM5xx97X6qw9w==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/spr_cmp.png.headers b/tests/expected/configured/spr_cmp.png.headers new file mode 100644 index 000000000..78b76896d --- /dev/null +++ b/tests/expected/configured/spr_cmp.png.headers @@ -0,0 +1,4 @@ +content-length: 785 +content-type: image/png +etag: W/"311-u7NFzzhK-VdpDMgsJ-SjaQ==" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/spr_cmp_2x.json.headers b/tests/expected/configured/spr_cmp_2x.json.headers new file mode 100644 index 000000000..6a33a9ff5 --- /dev/null +++ b/tests/expected/configured/spr_cmp_2x.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"106-XvyGBYKI-CKbS-pEdF5nAA==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/spr_cmp_2x.png.headers b/tests/expected/configured/spr_cmp_2x.png.headers new file mode 100644 index 000000000..dacce3df0 --- /dev/null +++ b/tests/expected/configured/spr_cmp_2x.png.headers @@ -0,0 +1,4 @@ +content-length: 1755 +content-type: image/png +etag: W/"6db-u2j270aTAu4aTfvEwg9iRA==" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/spr_mysrc.json.headers b/tests/expected/configured/spr_mysrc.json.headers new file mode 100644 index 000000000..40d619610 --- /dev/null +++ b/tests/expected/configured/spr_mysrc.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"3f-dujM8uKY4xAnuwDPF3cq1Q==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/spr_mysrc.png.headers b/tests/expected/configured/spr_mysrc.png.headers new file mode 100644 index 000000000..87f8ae923 --- /dev/null +++ b/tests/expected/configured/spr_mysrc.png.headers @@ -0,0 +1,4 @@ +content-length: 189 +content-type: image/png +etag: W/"bd-wRhFV2xvMbGQOJkdFxyNyg==" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/spr_mysrc_2x.json.headers b/tests/expected/configured/spr_mysrc_2x.json.headers new file mode 100644 index 000000000..f3941102a --- /dev/null +++ b/tests/expected/configured/spr_mysrc_2x.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"3f-ZlKlqxoAjk_BolpJ5vQ4Gw==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/spr_mysrc_2x.png.headers b/tests/expected/configured/spr_mysrc_2x.png.headers new file mode 100644 index 000000000..b7a97e72c --- /dev/null +++ b/tests/expected/configured/spr_mysrc_2x.png.headers @@ -0,0 +1,4 @@ +content-length: 344 +content-type: image/png +etag: W/"158-ZSYNoWLreCScoiFLriGD6Q==" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/spr_src1.json.headers b/tests/expected/configured/spr_src1.json.headers new file mode 100644 index 000000000..5c05feeef --- /dev/null +++ b/tests/expected/configured/spr_src1.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"c6-hm38ksFM7OrTdjwShP2iRA==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/spr_src1.png.headers b/tests/expected/configured/spr_src1.png.headers new file mode 100644 index 000000000..b9c2f2466 --- /dev/null +++ b/tests/expected/configured/spr_src1.png.headers @@ -0,0 +1,4 @@ +content-length: 758 +content-type: image/png +etag: W/"2f6-PZaBSgIOiVTrPDnRiX0hYg==" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/spr_src1_2x.json.headers b/tests/expected/configured/spr_src1_2x.json.headers new file mode 100644 index 000000000..66334744c --- /dev/null +++ b/tests/expected/configured/spr_src1_2x.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"c6-4pCj2iqngMtQ6k9bdvO19w==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/spr_src1_2x.png.headers b/tests/expected/configured/spr_src1_2x.png.headers new file mode 100644 index 000000000..c937a4cf4 --- /dev/null +++ b/tests/expected/configured/spr_src1_2x.png.headers @@ -0,0 +1,4 @@ +content-length: 1699 +content-type: image/png +etag: W/"6a3--J74WPHes8bNZx23r-Ru4w==" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/style_maplibre_demo.1.json.headers b/tests/expected/configured/style_maplibre_demo.1.json.headers new file mode 100644 index 000000000..143805f94 --- /dev/null +++ b/tests/expected/configured/style_maplibre_demo.1.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"1050-ndsWDIE-ORCeUzSbybafug==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/style_maplibre_demo.json.headers b/tests/expected/configured/style_maplibre_demo.json.headers new file mode 100644 index 000000000..143805f94 --- /dev/null +++ b/tests/expected/configured/style_maplibre_demo.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"1050-ndsWDIE-ORCeUzSbybafug==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/style_src2_maptiler_basic.1.json.headers b/tests/expected/configured/style_src2_maptiler_basic.1.json.headers new file mode 100644 index 000000000..9425e37ae --- /dev/null +++ b/tests/expected/configured/style_src2_maptiler_basic.1.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"3f5c-az1eu_MvSQst-tUfz9ePoQ==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/style_src2_maptiler_basic.json.headers b/tests/expected/configured/style_src2_maptiler_basic.json.headers new file mode 100644 index 000000000..9425e37ae --- /dev/null +++ b/tests/expected/configured/style_src2_maptiler_basic.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"3f5c-az1eu_MvSQst-tUfz9ePoQ==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/tbl_0_0_0.pbf.headers b/tests/expected/configured/tbl_0_0_0.pbf.headers new file mode 100644 index 000000000..d25a9c019 --- /dev/null +++ b/tests/expected/configured/tbl_0_0_0.pbf.headers @@ -0,0 +1,5 @@ +content-encoding: gzip +content-length: 643 +content-type: application/x-protobuf +etag: "318577514554804226527507038699986111507" +vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/expected/configured/tbl_comment_cfg.json.headers b/tests/expected/configured/tbl_comment_cfg.json.headers new file mode 100644 index 000000000..8e3e93972 --- /dev/null +++ b/tests/expected/configured/tbl_comment_cfg.json.headers @@ -0,0 +1,5 @@ +content-encoding: br +content-type: application/json +etag: W/"136-lHzPvh-7gSnjgJnd-2ctzQ==" +transfer-encoding: chunked +vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers diff --git a/tests/test.sh b/tests/test.sh index c77b63945..1ce3231b8 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -94,7 +94,8 @@ test_jsn() { echo "Testing $(basename "$FILENAME") from $URL" # jq before 1.6 had a different float->int behavior, so trying to make it consistent in all - $CURL "$URL" | jq --sort-keys -e 'walk(if type == "number" then .+0.0 else . end)' > "$FILENAME" + $CURL --dump-header "$FILENAME.headers" "$URL" | jq --sort-keys -e 'walk(if type == "number" then .+0.0 else . end)' > "$FILENAME" + clean_headers_dump "$FILENAME.headers" } test_pbf() { @@ -102,7 +103,8 @@ test_pbf() { URL="$MARTIN_URL/$2" echo "Testing $(basename "$FILENAME") from $URL" - $CURL "$URL" > "$FILENAME" + $CURL --dump-header "$FILENAME.headers" "$URL" > "$FILENAME" + clean_headers_dump "$FILENAME.headers" if [[ $OSTYPE == linux* ]]; then ./tests/fixtures/vtzero-check "$FILENAME" @@ -119,7 +121,8 @@ test_png() { URL="$MARTIN_URL/$2" echo "Testing $(basename "$FILENAME") from $URL" - $CURL "$URL" > "$FILENAME" + $CURL --dump-header "$FILENAME.headers" "$URL" > "$FILENAME" + clean_headers_dump "$FILENAME.headers" if [[ $OSTYPE == linux* ]]; then file "$FILENAME" > "$FILENAME.txt" @@ -136,7 +139,8 @@ test_font() { URL="$MARTIN_URL/$2" echo "Testing $(basename "$FILENAME") from $URL" - $CURL "$URL" > "$FILENAME" + $CURL --dump-header "$FILENAME.headers" "$URL" > "$FILENAME" + clean_headers_dump "$FILENAME.headers" } # Delete a line from a file $1 that matches parameter $2 @@ -148,6 +152,21 @@ remove_line() { mv "${FILE}.tmp" "${FILE}" } +# if we dump a headers file via curl, this is otherwise not reproducible +clean_headers_dump() { + FILE="$1" + # now we need to strip the date header as it is undeterministic + sed --regexp-extended --in-place "s/date: .+//" "$FILE" + # the http version is not an "header" that we want to assert + sed --regexp-extended --in-place "s/HTTP.+//" "$FILE" + # need to remove entirely empty lines, \r\n and leading/trailing whitespace + # sorting is arbitrairy => sort here + tr --squeeze-repeats '\r\n' '\n' < "$FILE" | sort > "$FILE.tmp" + mv "$FILE.tmp" "$FILE" + # we need to remove the first line as squeezing repeat newlines makes does not remove this empty line + sed --in-place '1d' "$FILE" +} + test_log_has_str() { LOG_FILE="$1" EXPECTED_TEXT="$2"