@@ -4,7 +4,7 @@ use async_std::io::{self, BufReader, Read, Write};
44use async_std:: prelude:: * ;
55use async_std:: task:: { Context , Poll } ;
66use futures_core:: ready;
7- use http_types:: Error ;
7+ use http_types:: { ensure , ensure_eq , format_err , Error } ;
88use http_types:: {
99 headers:: { HeaderName , HeaderValue , CONTENT_LENGTH , DATE , TRANSFER_ENCODING } ,
1010 Body , Request , Response , StatusCode ,
@@ -87,10 +87,8 @@ async fn encode(req: Request) -> http_types::Result<Encoder> {
8787
8888 // Insert Host header
8989 // Insert host
90- let host = req
91- . url ( )
92- . host_str ( )
93- . ok_or_else ( || http_types:: format_err!( "Missing hostname" ) ) ?;
90+ let host = req. url ( ) . host_str ( ) ;
91+ let host = host. ok_or_else ( || format_err ! ( "Missing hostname" ) ) ?;
9492 let val = if let Some ( port) = req. url ( ) . port ( ) {
9593 format ! ( "host: {}:{}\r \n " , host, port)
9694 } else {
@@ -157,16 +155,15 @@ where
157155
158156 // Convert our header buf into an httparse instance, and validate.
159157 let status = httparse_res. parse ( & buf) ?;
160- http_types :: ensure!( !status. is_partial( ) , "Malformed HTTP head" ) ;
158+ ensure ! ( !status. is_partial( ) , "Malformed HTTP head" ) ;
161159
162160 let code = httparse_res. code ;
163- let code = code. ok_or_else ( || http_types :: format_err!( "No status code found" ) ) ?;
161+ let code = code. ok_or_else ( || format_err ! ( "No status code found" ) ) ?;
164162
165163 // Convert httparse headers + body into a `http::Response` type.
166164 let version = httparse_res. version ;
167- let version = version. ok_or_else ( || http_types:: format_err!( "No version found" ) ) ?;
168-
169- http_types:: ensure!( version == 1 , "Unsupported HTTP version" ) ;
165+ let version = version. ok_or_else ( || format_err ! ( "No version found" ) ) ?;
166+ ensure_eq ! ( version, 1 , "Unsupported HTTP version" ) ;
170167
171168 let mut res = Response :: new ( StatusCode :: try_from ( code) ?) ;
172169 for header in httparse_res. headers . iter ( ) {
@@ -183,7 +180,7 @@ where
183180 let content_length = res. header ( & CONTENT_LENGTH ) ;
184181 let transfer_encoding = res. header ( & TRANSFER_ENCODING ) ;
185182
186- http_types :: ensure!(
183+ ensure ! (
187184 content_length. is_none( ) || transfer_encoding. is_none( ) ,
188185 "Unexpected Content-Length header"
189186 ) ;
@@ -193,10 +190,8 @@ where
193190 Some ( encoding) if !encoding. is_empty ( ) => {
194191 if encoding. last ( ) . unwrap ( ) . as_str ( ) == "chunked" {
195192 let trailers_sender = res. send_trailers ( ) ;
196- res. set_body ( Body :: from_reader (
197- BufReader :: new ( ChunkedDecoder :: new ( reader, trailers_sender) ) ,
198- None ,
199- ) ) ;
193+ let reader = BufReader :: new ( ChunkedDecoder :: new ( reader, trailers_sender) ) ;
194+ res. set_body ( Body :: from_reader ( reader, None ) ) ;
200195 return Ok ( res) ;
201196 }
202197 // Fall through to Content-Length
0 commit comments