sword_core/layers/
builtin.rs1use crate::{Config, ConfigItem, ConfigRegistrar, State, inventory_submit};
2use serde::{Deserialize, Serialize};
3use sword_layers::prelude::{
4 BodyLimitConfig, CompressionConfig, CorsConfig, DisplayConfig,
5 RequestTimeoutConfig, ServeDirConfig,
6};
7
8#[derive(Debug, Clone, Deserialize, Serialize, Default)]
9#[serde(default)]
10pub struct MiddlewaresConfig {
11 #[serde(rename = "body-limit")]
12 pub body_limit: BodyLimitConfig,
13
14 #[serde(rename = "request-timeout")]
15 pub request_timeout: RequestTimeoutConfig,
16
17 pub cors: CorsConfig,
18 pub compression: CompressionConfig,
19}
20
21impl DisplayConfig for MiddlewaresConfig {
22 fn display(&self) {
23 self.body_limit.display();
24 self.request_timeout.display();
25 self.compression.display();
26 self.cors.display();
27 }
28}
29
30impl ConfigItem for MiddlewaresConfig {
31 fn toml_key() -> &'static str {
32 "middlewares"
33 }
34
35 fn register(state: &State, config: &Config) {
36 state.insert(config.get_or_default::<Self>());
37 }
38}
39
40impl ConfigItem for ServeDirConfig {
41 fn toml_key() -> &'static str {
42 "serve-dir"
43 }
44
45 fn register(state: &State, config: &Config) {
46 state.insert(config.get_or_default::<Self>());
47 }
48}
49
50inventory_submit! {[
51 ConfigRegistrar::new(|state, config| {
52 MiddlewaresConfig::register(state, config)
53 }),
54 ConfigRegistrar::new(|state, config| {
55 ServeDirConfig::register(state, config)
56 }),
57]}