@@ -4,7 +4,7 @@ use async_std::io::{self, BufReader, Read, Write};
4
4
use async_std:: prelude:: * ;
5
5
use async_std:: task:: { Context , Poll } ;
6
6
use futures_core:: ready;
7
- use http_types:: Error ;
7
+ use http_types:: { ensure , ensure_eq , format_err , Error } ;
8
8
use http_types:: {
9
9
headers:: { HeaderName , HeaderValue , CONTENT_LENGTH , DATE , TRANSFER_ENCODING } ,
10
10
Body , Request , Response , StatusCode ,
@@ -87,10 +87,8 @@ async fn encode(req: Request) -> http_types::Result<Encoder> {
87
87
88
88
// Insert Host header
89
89
// 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" ) ) ?;
94
92
let val = if let Some ( port) = req. url ( ) . port ( ) {
95
93
format ! ( "host: {}:{}\r \n " , host, port)
96
94
} else {
@@ -157,16 +155,15 @@ where
157
155
158
156
// Convert our header buf into an httparse instance, and validate.
159
157
let status = httparse_res. parse ( & buf) ?;
160
- http_types :: ensure!( !status. is_partial( ) , "Malformed HTTP head" ) ;
158
+ ensure ! ( !status. is_partial( ) , "Malformed HTTP head" ) ;
161
159
162
160
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" ) ) ?;
164
162
165
163
// Convert httparse headers + body into a `http::Response` type.
166
164
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" ) ;
170
167
171
168
let mut res = Response :: new ( StatusCode :: try_from ( code) ?) ;
172
169
for header in httparse_res. headers . iter ( ) {
@@ -183,7 +180,7 @@ where
183
180
let content_length = res. header ( & CONTENT_LENGTH ) ;
184
181
let transfer_encoding = res. header ( & TRANSFER_ENCODING ) ;
185
182
186
- http_types :: ensure!(
183
+ ensure ! (
187
184
content_length. is_none( ) || transfer_encoding. is_none( ) ,
188
185
"Unexpected Content-Length header"
189
186
) ;
@@ -193,10 +190,8 @@ where
193
190
Some ( encoding) if !encoding. is_empty ( ) => {
194
191
if encoding. last ( ) . unwrap ( ) . as_str ( ) == "chunked" {
195
192
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 ) ) ;
200
195
return Ok ( res) ;
201
196
}
202
197
// Fall through to Content-Length
0 commit comments