1use crate::service::WebflowService;
2use axum::{
3 http::StatusCode,
4 response::{IntoResponse, Response},
5};
6use tower::{BoxError, Layer};
7
8pub async fn box_err_to_res(err: BoxError) -> Response {
9 tracing::error!(?err, "middleware error");
10 (StatusCode::BAD_REQUEST, err.to_string()).into_response()
11}
12
13#[derive(Clone)]
15pub struct WebflowLayer<Secret> {
16 webflow_form_secret: Secret,
17}
18
19impl<Secret> WebflowLayer<Secret> {
20 pub fn new(webflow_form_secret: Secret) -> Self
21 {
22 Self {
23 webflow_form_secret,
24 }
25 }
26}
27
28impl<S, Secret> Layer<S> for WebflowLayer<Secret>
29where
30 Secret: AsRef<[u8]> + Clone,
31{
32 type Service = WebflowService<S, Secret>;
33
34 fn layer(&self, inner: S) -> Self::Service {
35 WebflowService {
36 inner,
37 secret: self.webflow_form_secret.clone(),
38 }
39 }
40}