@@ -3,22 +3,22 @@ mod ser;
33mod util;
44
55use xitca_http:: {
6+ HttpServiceBuilder ,
67 h1:: RequestBody ,
7- http:: { header:: SERVER , StatusCode } ,
8+ http:: { StatusCode , header:: SERVER } ,
89 util:: {
910 middleware:: context:: { Context , ContextBuilder } ,
1011 service:: {
1112 route:: get,
1213 router:: { Router , RouterError } ,
1314 } ,
1415 } ,
15- HttpServiceBuilder ,
1616} ;
17- use xitca_service:: { fn_service , Service , ServiceExt } ;
17+ use xitca_service:: { Service , ServiceExt , fn_service } ;
1818
1919use db:: Client ;
20- use ser:: { error_response , IntoResponse , Message , Request , Response } ;
21- use util:: { HandleResult , QueryParse , State , SERVER_HEADER_VALUE } ;
20+ use ser:: { IntoResponse , Message , Request , Response , error_response } ;
21+ use util:: { HandleResult , QueryParse , SERVER_HEADER_VALUE , State } ;
2222
2323type Ctx < ' a > = Context < ' a , Request < RequestBody > , State < Client > > ;
2424
@@ -30,33 +30,27 @@ fn main() -> std::io::Result<()> {
3030 . insert ( "/fortunes" , get ( fn_service ( fortunes) ) )
3131 . insert ( "/queries" , get ( fn_service ( queries) ) )
3232 . insert ( "/updates" , get ( fn_service ( updates) ) )
33- . enclosed_fn ( middleware)
3433 . enclosed ( ContextBuilder :: new ( || async { db:: create ( ) . await . map ( State :: new) } ) )
34+ . enclosed_fn ( async |service, req| {
35+ let mut res = service. call ( req) . await . unwrap_or_else ( error_handler) ;
36+ res. headers_mut ( ) . insert ( SERVER , SERVER_HEADER_VALUE ) ;
37+ Ok :: < _ , core:: convert:: Infallible > ( res)
38+ } )
3539 . enclosed ( HttpServiceBuilder :: h1 ( ) . io_uring ( ) ) ;
3640 xitca_server:: Builder :: new ( )
3741 . bind ( "xitca-web" , "0.0.0.0:8080" , service) ?
3842 . build ( )
3943 . wait ( )
4044}
4145
42- async fn middleware < S > ( service : & S , req : Ctx < ' _ > ) -> Result < Response , core:: convert:: Infallible >
43- where
44- S : for < ' c > Service < Ctx < ' c > , Response = Response , Error = RouterError < util:: Error > > ,
45- {
46- let mut res = service. call ( req) . await . unwrap_or_else ( error_handler) ;
47- res. headers_mut ( ) . insert ( SERVER , SERVER_HEADER_VALUE ) ;
48- Ok ( res)
49- }
50-
5146#[ cold]
5247#[ inline( never) ]
5348fn error_handler ( e : RouterError < util:: Error > ) -> Response {
54- let status = match e {
49+ error_response ( match e {
5550 RouterError :: Match ( _) => StatusCode :: NOT_FOUND ,
5651 RouterError :: NotAllowed ( _) => StatusCode :: METHOD_NOT_ALLOWED ,
5752 RouterError :: Service ( _) => StatusCode :: INTERNAL_SERVER_ERROR ,
58- } ;
59- error_response ( status)
53+ } )
6054}
6155
6256async fn plain_text ( ctx : Ctx < ' _ > ) -> HandleResult < Response > {
0 commit comments