via/middleware/
accept_method.rs

1use http::Method;
2
3use super::Middleware;
4use crate::request::Request;
5
6pub fn connect<T>(middleware: impl Middleware<T>) -> impl Middleware<T> {
7    accept_method(Method::CONNECT, middleware)
8}
9
10pub fn delete<T>(middleware: impl Middleware<T>) -> impl Middleware<T> {
11    accept_method(Method::DELETE, middleware)
12}
13
14pub fn get<T>(middleware: impl Middleware<T>) -> impl Middleware<T> {
15    accept_method(Method::GET, middleware)
16}
17
18pub fn head<T>(middleware: impl Middleware<T>) -> impl Middleware<T> {
19    accept_method(Method::HEAD, middleware)
20}
21
22pub fn options<T>(middleware: impl Middleware<T>) -> impl Middleware<T> {
23    accept_method(Method::OPTIONS, middleware)
24}
25
26pub fn patch<T>(middleware: impl Middleware<T>) -> impl Middleware<T> {
27    accept_method(Method::PATCH, middleware)
28}
29
30pub fn post<T>(middleware: impl Middleware<T>) -> impl Middleware<T> {
31    accept_method(Method::POST, middleware)
32}
33
34pub fn put<T>(middleware: impl Middleware<T>) -> impl Middleware<T> {
35    accept_method(Method::PUT, middleware)
36}
37
38pub fn trace<T>(middleware: impl Middleware<T>) -> impl Middleware<T> {
39    accept_method(Method::TRACE, middleware)
40}
41
42fn accept_method<T>(method: Method, middleware: impl Middleware<T>) -> impl Middleware<T> {
43    move |request: Request<T>, next| {
44        if request.method() == method {
45            middleware.call(request, next)
46        } else {
47            next.call(request)
48        }
49    }
50}