@@ -7,8 +7,8 @@ use hyper::{header, Server, StatusCode};
77use std:: { net:: SocketAddr , path:: PathBuf } ;
88
99use hyper_middleware:: {
10- AfterMiddleware , BeforeMiddleware , Body , Chain , Error , Handler , Request , Response , Result ,
11- Service ,
10+ async_trait , AfterMiddleware , BeforeMiddleware , Body , Chain , Error , Handler , Request , Response ,
11+ Result , Service ,
1212} ;
1313
1414struct Config {
@@ -19,8 +19,9 @@ struct Application {
1919 opts : Config ,
2020}
2121
22+ #[ async_trait]
2223impl Handler for Application {
23- fn handle ( & self , req : & mut Request ) -> Result < Response > {
24+ async fn handle ( & self , req : & mut Request ) -> Result < Response > {
2425 // Access the Hyper incoming Request
2526 println ! ( "Handler - URI Path: {}" , req. uri( ) . path( ) ) ;
2627
@@ -40,8 +41,9 @@ impl Handler for Application {
4041
4142struct FirstMiddleware { }
4243
44+ #[ async_trait]
4345impl BeforeMiddleware for FirstMiddleware {
44- fn before ( & self , req : & mut Request ) -> Result {
46+ async fn before ( & self , req : & mut Request ) -> Result {
4547 println ! ( "First Middleware called!" ) ;
4648
4749 // Access the Hyper incoming Request
@@ -50,15 +52,16 @@ impl BeforeMiddleware for FirstMiddleware {
5052 Ok ( ( ) )
5153 }
5254
53- fn catch ( & self , _: & mut Request , err : Error ) -> Result {
55+ async fn catch ( & self , _: & mut Request , err : Error ) -> Result {
5456 Err ( err)
5557 }
5658}
5759
5860struct SecondMiddleware { }
5961
62+ #[ async_trait]
6063impl AfterMiddleware for SecondMiddleware {
61- fn after ( & self , _: & mut Request , mut res : Response ) -> Result < Response > {
64+ async fn after ( & self , _: & mut Request , mut res : Response ) -> Result < Response > {
6265 println ! ( "Second Middleware called!" ) ;
6366
6467 // Mutate the Hyper Response at convenience
@@ -71,7 +74,7 @@ impl AfterMiddleware for SecondMiddleware {
7174 Ok ( res)
7275 }
7376
74- fn catch ( & self , _: & mut Request , err : Error ) -> Result < Response > {
77+ async fn catch ( & self , _: & mut Request , err : Error ) -> Result < Response > {
7578 Ok ( Response :: builder ( )
7679 . status ( StatusCode :: NOT_FOUND )
7780 . body ( Body :: from ( err. to_string ( ) ) )
0 commit comments