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)]
17#[allow(dead_code)]
18pub enum Mode {
19 Http1,
20 Http2,
21}
22
23#[async_trait]
24pub trait Middleware: Send + Sync {
25 async fn run(&self, req: &mut RequestBody, res: &mut ResponseWriter);
26}
27
28#[async_trait]
29pub trait ErrorHandler: Send + Sync {
30 async fn run(&self, msg: String, res: &mut ResponseWriter);
31}
32
33#[async_trait]
34pub trait Handler: Send + Sync {
35 async fn handle(&self, req: &mut RequestBody, res: &mut ResponseWriter);
36}