satex_layer/set_prefix/
layer.rs1#![doc = include_str!("../../docs/set_prefix.md")]
2
3use crate::set_prefix::SetPrefix;
4use satex_core::util::canonicalize;
5use std::sync::Arc;
6use tower::Layer;
7
8#[derive(Debug, Clone)]
9pub struct SetPrefixLayer {
10 prefix: Arc<str>,
11}
12
13impl SetPrefixLayer {
14 pub fn new(prefix: impl AsRef<str>) -> Self {
15 Self {
16 prefix: Arc::from(canonicalize(prefix.as_ref())),
17 }
18 }
19}
20
21impl<S> Layer<S> for SetPrefixLayer {
22 type Service = SetPrefix<S>;
23
24 fn layer(&self, inner: S) -> Self::Service {
25 SetPrefix::new(inner, self.prefix.clone())
26 }
27}