refactor(http): reduce complexity of determing an Encoder

This commit is contained in:
Sean McArthur
2017-05-25 10:38:37 -07:00
parent e69cd1ab3a
commit 2cbf4ef85f

View File

@@ -94,14 +94,11 @@ impl Http1Transaction for ServerTransaction {
head.headers.set(header::Date(SystemTime::now().into())); head.headers.set(header::Date(SystemTime::now().into()));
} }
let mut is_chunked = true; let len = head.headers.get::<header::ContentLength>().map(|n| **n);
let mut body = Encoder::chunked();
if let Some(cl) = head.headers.get::<header::ContentLength>() {
body = Encoder::length(**cl);
is_chunked = false
}
if is_chunked { let body = if let Some(len) = len {
Encoder::length(len)
} else {
let encodings = match head.headers.get_mut::<header::TransferEncoding>() { let encodings = match head.headers.get_mut::<header::TransferEncoding>() {
Some(&mut header::TransferEncoding(ref mut encodings)) => { Some(&mut header::TransferEncoding(ref mut encodings)) => {
if encodings.last() != Some(&header::Encoding::Chunked) { if encodings.last() != Some(&header::Encoding::Chunked) {
@@ -115,7 +112,8 @@ impl Http1Transaction for ServerTransaction {
if encodings { if encodings {
head.headers.set(header::TransferEncoding(vec![header::Encoding::Chunked])); head.headers.set(header::TransferEncoding(vec![header::Encoding::Chunked]));
} }
} Encoder::chunked()
};
let init_cap = 30 + head.headers.len() * AVERAGE_HEADER_SIZE; let init_cap = 30 + head.headers.len() * AVERAGE_HEADER_SIZE;