rs_zero/rest/
layer_stack.rs1use axum::Router;
2
3use crate::rest::{RestConfig, middleware::apply_default_layers};
4
5#[derive(Debug, Clone)]
12pub struct RestLayerStack {
13 config: RestConfig,
14}
15
16impl RestLayerStack {
17 pub fn new(config: RestConfig) -> Self {
19 Self { config }
20 }
21
22 pub fn go_zero_defaults(name: impl Into<String>) -> Self {
24 Self::new(RestConfig::go_zero_defaults(name))
25 }
26
27 pub fn layer(&self, router: Router) -> Router {
29 apply_default_layers(router, self.config.clone())
30 }
31
32 pub fn into_layer(self) -> RestRouterLayer {
34 RestRouterLayer {
35 config: self.config,
36 }
37 }
38}
39
40#[derive(Debug, Clone)]
42pub struct RestRouterLayer {
43 config: RestConfig,
44}
45
46impl tower::Layer<Router> for RestRouterLayer {
47 type Service = Router;
48
49 fn layer(&self, inner: Router) -> Self::Service {
50 apply_default_layers(inner, self.config.clone())
51 }
52}