pub mod get;
pub mod post;

pub use get::get_handler;
pub use post::normalize_mf2;
pub use post::post_handler;

pub struct CORSMiddleware {}

use async_trait::async_trait;
use tide::{Next, Request, Result};
use crate::database;
use crate::ApplicationState;

#[async_trait]
impl<B> tide::Middleware<ApplicationState<B>> for CORSMiddleware
where
    B: database::Storage + Send + Sync + Clone,
{
    async fn handle(&self, req: Request<ApplicationState<B>>, next: Next<'_, ApplicationState<B>>) -> Result {
        let mut res = next.run(req).await;

        res.insert_header("Access-Control-Allow-Origin", "*");

        Ok(res)
    }
}