ordinary_config/app/middleware/
mod.rs1use serde::{Deserialize, Serialize};
6use std::collections::BTreeSet;
7
8#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
9#[cfg_attr(feature = "docs", derive(schemars::JsonSchema))]
10#[derive(Deserialize, Serialize, Debug, Clone)]
11pub enum MiddlewareMechanism {
12 Request { endpoint: String },
13}
14
15#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
16#[cfg_attr(feature = "docs", derive(schemars::JsonSchema))]
17#[derive(Deserialize, Serialize, Debug, Clone)]
18pub enum MiddlewareValidationRule {
19 #[cfg_attr(feature = "utoipa", schema(no_recursion))]
21 Any(Vec<Box<MiddlewareValidationRule>>),
22 #[cfg_attr(feature = "utoipa", schema(no_recursion))]
24 All(Vec<Box<MiddlewareValidationRule>>),
25 #[cfg_attr(feature = "utoipa", schema(no_recursion))]
27 Not(Box<MiddlewareValidationRule>),
28
29 StatusCode(u16),
32}
33
34#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
35#[cfg_attr(feature = "docs", derive(schemars::JsonSchema))]
36#[derive(Deserialize, Serialize, Debug, Clone, PartialOrd, PartialEq, Ord, Eq)]
37pub enum MiddlewareValidationComponent {
38 Headers,
40 Path,
42 Query,
44}
45
46#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
47#[cfg_attr(feature = "docs", derive(schemars::JsonSchema))]
48#[derive(Deserialize, Serialize, Debug, Clone)]
49pub enum MiddlewareOperation {
50 Validate {
51 rule: MiddlewareValidationRule,
52 components: BTreeSet<MiddlewareValidationComponent>,
53 },
54}
55
56#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
58#[cfg_attr(feature = "docs", derive(schemars::JsonSchema))]
59#[derive(Deserialize, Serialize, Debug, Clone)]
60pub struct MiddlewareConfig {
61 pub name: String,
64
65 pub operation: MiddlewareOperation,
67
68 pub mechanism: MiddlewareMechanism,
70}