Headers, cache tweaks
This commit is contained in:
@@ -142,8 +142,18 @@ pub fn assets(input: TokenStream) -> TokenStream {
|
||||
quote! {
|
||||
#[doc = #router_doc]
|
||||
pub fn #router_name() -> (&'static str, ::axum::Router<()>) {
|
||||
use ::tower_http::compression::{CompressionLayer, DefaultPredicate};
|
||||
|
||||
let compression: CompressionLayer = CompressionLayer::new()
|
||||
.br(true)
|
||||
.deflate(true)
|
||||
.gzip(true)
|
||||
.zstd(true)
|
||||
.compress_when(DefaultPredicate::new());
|
||||
|
||||
let router = ::axum::Router::new()
|
||||
#(#route_definitions)*;
|
||||
#(#route_definitions)*
|
||||
.layer(compression);
|
||||
(#prefix, router)
|
||||
}
|
||||
}
|
||||
@@ -240,27 +250,39 @@ impl Parse for AssetDefinition {
|
||||
match field_name.to_string().as_str() {
|
||||
"source" => {
|
||||
if source.is_some() {
|
||||
return Err(syn::Error::new(field_name.span(), "duplicate 'source' field"));
|
||||
return Err(syn::Error::new(
|
||||
field_name.span(),
|
||||
"duplicate 'source' field",
|
||||
));
|
||||
}
|
||||
source = Some(content.parse()?);
|
||||
}
|
||||
"target" => {
|
||||
if target.is_some() {
|
||||
return Err(syn::Error::new(field_name.span(), "duplicate 'target' field"));
|
||||
return Err(syn::Error::new(
|
||||
field_name.span(),
|
||||
"duplicate 'target' field",
|
||||
));
|
||||
}
|
||||
let target_lit: LitStr = content.parse()?;
|
||||
target = Some(target_lit.value());
|
||||
}
|
||||
"headers" => {
|
||||
if headers.is_some() {
|
||||
return Err(syn::Error::new(field_name.span(), "duplicate 'headers' field"));
|
||||
return Err(syn::Error::new(
|
||||
field_name.span(),
|
||||
"duplicate 'headers' field",
|
||||
));
|
||||
}
|
||||
headers = Some(content.parse()?);
|
||||
}
|
||||
_ => {
|
||||
return Err(syn::Error::new(
|
||||
field_name.span(),
|
||||
format!("unknown field '{}', expected 'source', 'target', or 'headers'", field_name)
|
||||
format!(
|
||||
"unknown field '{}', expected 'source', 'target', or 'headers'",
|
||||
field_name
|
||||
),
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -272,8 +294,10 @@ impl Parse for AssetDefinition {
|
||||
}
|
||||
|
||||
// Validate required fields
|
||||
let source = source.ok_or_else(|| syn::Error::new(name.span(), "missing required field 'source'"))?;
|
||||
let target = target.ok_or_else(|| syn::Error::new(name.span(), "missing required field 'target'"))?;
|
||||
let source = source
|
||||
.ok_or_else(|| syn::Error::new(name.span(), "missing required field 'source'"))?;
|
||||
let target = target
|
||||
.ok_or_else(|| syn::Error::new(name.span(), "missing required field 'target'"))?;
|
||||
|
||||
Ok(AssetDefinition {
|
||||
name,
|
||||
|
||||
Reference in New Issue
Block a user