1use crate::{request::RequestBody, response::ResponseWriter};
2use async_trait::async_trait;
3
4#[derive(Hash, Eq, PartialEq, Debug, Clone, Copy)]
5pub enum Method {
6 GET,
7 POST,
8 PUT,
9 PATCH,
10 DELETE,
11 OPTIONS,
12 HEAD,
13 TRACE,
14}
15
16#[derive(Eq, PartialEq)]
17pub enum Mode {
18 Http1,
19 Http2,
20}
21
22pub type Handler = fn(&mut RequestBody, &mut ResponseWriter);
23
24#[async_trait]
25pub trait Middleware: Send + Sync {
26 async fn run(&self, req: &mut RequestBody, res: &mut ResponseWriter);
27}
28
29#[async_trait]
30pub trait ErrorHandler: Send + Sync {
31 async fn run(&self, msg: String, res: &mut ResponseWriter);
32}