Skip to content

Commit 300c7b6

Browse files
committed
clean up err handling slightly
Also split a few unrelated long statements into newlines.
1 parent 367eee9 commit 300c7b6

File tree

2 files changed

+17
-28
lines changed

2 files changed

+17
-28
lines changed

src/client.rs

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use async_std::io::{self, BufReader, Read, Write};
44
use async_std::prelude::*;
55
use async_std::task::{Context, Poll};
66
use futures_core::ready;
7-
use http_types::Error;
7+
use http_types::{ensure, ensure_eq, format_err, Error};
88
use 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

src/server.rs

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -373,9 +373,8 @@ where
373373
let uri = uri.ok_or_else(|| format_err!("No uri found"))?;
374374
let uri = url::Url::parse(&format!("{}{}", addr, uri))?;
375375

376-
let version = httparse_req
377-
.version
378-
.ok_or_else(|| format_err!("No version found"))?;
376+
let version = httparse_req.version;
377+
let version = version.ok_or_else(|| format_err!("No version found"))?;
379378
ensure_eq!(version, HTTP_1_1_VERSION, "Unsupported HTTP version");
380379

381380
let mut req = Request::new(Method::from_str(method)?, uri);
@@ -398,10 +397,8 @@ where
398397
Some(encoding) if !encoding.is_empty() => {
399398
if encoding.last().unwrap().as_str() == "chunked" {
400399
let trailer_sender = req.send_trailers();
401-
req.set_body(Body::from_reader(
402-
BufReader::new(ChunkedDecoder::new(reader, trailer_sender)),
403-
None,
404-
));
400+
let reader = BufReader::new(ChunkedDecoder::new(reader, trailer_sender));
401+
req.set_body(Body::from_reader(reader, None));
405402
return Ok(Some(req));
406403
}
407404
// Fall through to Content-Length
@@ -412,12 +409,9 @@ where
412409
}
413410

414411
// Check for Content-Length.
415-
match content_length {
416-
Some(len) => {
417-
let len = len.last().unwrap().as_str().parse::<usize>()?;
418-
req.set_body(Body::from_reader(reader.take(len as u64), Some(len)));
419-
}
420-
None => {}
412+
if let Some(len) = content_length {
413+
let len = len.last().unwrap().as_str().parse::<usize>()?;
414+
req.set_body(Body::from_reader(reader.take(len as u64), Some(len)));
421415
}
422416

423417
Ok(Some(req))

0 commit comments

Comments
 (0)