From d7e8b8b117012c1c0cf81d8a0bbe41fa9e85bafc Mon Sep 17 00:00:00 2001 From: Kyle Dewey Date: Mon, 17 Nov 2014 22:34:14 -0800 Subject: [PATCH 1/3] Now using use along with enums, as per https://github.com/rust-lang/rust/pull/18973. --- src/client/request.rs | 17 +++--- src/client/response.rs | 13 ++--- src/header/common/connection.rs | 2 + src/header/common/transfer_encoding.rs | 3 +- src/header/common/upgrade.rs | 2 + src/http.rs | 75 ++++++++++++++------------ src/lib.rs | 8 +-- src/method.rs | 3 ++ src/net.rs | 2 + src/server/request.rs | 3 +- src/server/response.rs | 11 ++-- src/status.rs | 5 ++ src/version.rs | 2 + 13 files changed, 90 insertions(+), 56 deletions(-) diff --git a/src/client/request.rs b/src/client/request.rs index 52c60cfd63..cd0b325998 100644 --- a/src/client/request.rs +++ b/src/client/request.rs @@ -3,13 +3,16 @@ use std::io::{BufferedWriter, IoResult}; use url::Url; -use method::{mod, Get, Post, Delete, Put, Patch, Head, Options}; +use method; +use method::Method::{Get, Post, Delete, Put, Patch, Head, Options}; use header::Headers; use header::common::{mod, Host}; use net::{NetworkStream, NetworkConnector, HttpStream, Fresh, Streaming}; -use http::{HttpWriter, ThroughWriter, ChunkedWriter, SizedWriter, EmptyWriter, LINE_ENDING}; +use HttpError::HttpUriError; +use http::{HttpWriter, LINE_ENDING}; +use http::HttpWriter::{ThroughWriter, ChunkedWriter, SizedWriter, EmptyWriter}; use version; -use {HttpResult, HttpUriError}; +use HttpResult; use client::Response; @@ -69,7 +72,7 @@ impl Request { method: method, headers: headers, url: url, - version: version::Http11, + version: version::HttpVersion::Http11, body: stream }) } @@ -141,7 +144,7 @@ impl Request { let encodings = match self.headers.get_mut::() { Some(&common::TransferEncoding(ref mut encodings)) => { //TODO: check if chunked is already in encodings. use HashSet? - encodings.push(common::transfer_encoding::Chunked); + encodings.push(common::transfer_encoding::Encoding::Chunked); false }, None => true @@ -149,7 +152,7 @@ impl Request { if encodings { self.headers.set::( - common::TransferEncoding(vec![common::transfer_encoding::Chunked])) + common::TransferEncoding(vec![common::transfer_encoding::Encoding::Chunked])) } } @@ -206,7 +209,7 @@ mod tests { use std::boxed::BoxAny; use std::str::from_utf8; use url::Url; - use method::{Get, Head}; + use method::Method::{Get, Head}; use mock::MockStream; use super::Request; diff --git a/src/client/response.rs b/src/client/response.rs index b54fec490a..f010029066 100644 --- a/src/client/response.rs +++ b/src/client/response.rs @@ -3,12 +3,13 @@ use std::io::{BufferedReader, IoResult}; use header; use header::common::{ContentLength, TransferEncoding}; -use header::common::transfer_encoding::Chunked; +use header::common::transfer_encoding::Encoding::Chunked; use net::{NetworkStream, HttpStream}; -use http::{read_status_line, HttpReader, SizedReader, ChunkedReader, EofReader}; +use http::{read_status_line, HttpReader}; +use http::HttpReader::{SizedReader, ChunkedReader, EofReader}; use status; use version; -use {HttpResult}; +use HttpResult; /// A response for a client request to a remote server. pub struct Response { @@ -85,7 +86,7 @@ mod tests { use std::io::BufferedReader; use header::Headers; - use http::EofReader; + use http::HttpReader::EofReader; use mock::MockStream; use net::NetworkStream; use status; @@ -97,9 +98,9 @@ mod tests { #[test] fn test_unwrap() { let res = Response { - status: status::Ok, + status: status::StatusCode::Ok, headers: Headers::new(), - version: version::Http11, + version: version::HttpVersion::Http11, body: EofReader(BufferedReader::new(box MockStream::new() as Box)) }; diff --git a/src/header/common/connection.rs b/src/header/common/connection.rs index f58cb4fc0c..405a655ece 100644 --- a/src/header/common/connection.rs +++ b/src/header/common/connection.rs @@ -3,6 +3,8 @@ use std::fmt::{mod, Show}; use std::str::FromStr; use super::util::{from_comma_delimited, fmt_comma_delimited}; +use self::ConnectionOption::{KeepAlive, Close, ConnectionHeader}; + /// The `Connection` header. #[deriving(Clone, PartialEq, Show)] pub struct Connection(pub Vec); diff --git a/src/header/common/transfer_encoding.rs b/src/header/common/transfer_encoding.rs index ea6ff7a0ec..38a64457d5 100644 --- a/src/header/common/transfer_encoding.rs +++ b/src/header/common/transfer_encoding.rs @@ -3,6 +3,8 @@ use std::fmt; use std::str::FromStr; use super::util::{from_comma_delimited, fmt_comma_delimited}; +use self::Encoding::{Chunked, Gzip, Deflate, Compress, EncodingExt}; + /// The `Transfer-Encoding` header. /// /// This header describes the encoding of the message body. It can be @@ -32,7 +34,6 @@ pub struct TransferEncoding(pub Vec); pub enum Encoding { /// The `chunked` encoding. Chunked, - /// The `gzip` encoding. Gzip, /// The `deflate` encoding. diff --git a/src/header/common/upgrade.rs b/src/header/common/upgrade.rs index 55f5f850fd..1f2a9d8669 100644 --- a/src/header/common/upgrade.rs +++ b/src/header/common/upgrade.rs @@ -3,6 +3,8 @@ use std::fmt::{mod, Show}; use std::str::FromStr; use super::util::{from_comma_delimited, fmt_comma_delimited}; +use self::Protocol::{WebSocket, ProtocolExt}; + /// The `Upgrade` header. #[deriving(Clone, PartialEq, Show)] pub struct Upgrade(Vec); diff --git a/src/http.rs b/src/http.rs index 7069ea9733..b7f06d49ff 100644 --- a/src/http.rs +++ b/src/http.rs @@ -9,9 +9,15 @@ use url::Url; use method; use status; use uri; -use version::{HttpVersion, Http09, Http10, Http11, Http20}; -use {HttpResult, HttpMethodError, HttpVersionError, HttpIoError, HttpUriError}; -use {HttpHeaderError, HttpStatusError}; +use uri::RequestUri::{AbsolutePath, AbsoluteUri, Authority, Star}; +use version::HttpVersion; +use version::HttpVersion::{Http09, Http10, Http11, Http20}; +use HttpError::{HttpHeaderError, HttpIoError, HttpMethodError, HttpStatusError, + HttpUriError, HttpVersionError}; +use HttpResult; + +use self::HttpReader::{SizedReader, ChunkedReader, EofReader}; +use self::HttpWriter::{ThroughWriter, ChunkedWriter, SizedWriter, EmptyWriter}; /// Readers to handle different Transfer-Encodings. /// @@ -327,15 +333,15 @@ pub fn read_method(stream: &mut R) -> HttpResult { debug!("method buf = {}", buf[].to_ascii()); let maybe_method = match buf[0..7] { - b"GET " => Some(method::Get), - b"PUT " => Some(method::Put), - b"POST " => Some(method::Post), - b"HEAD " => Some(method::Head), - b"PATCH " => Some(method::Patch), - b"TRACE " => Some(method::Trace), - b"DELETE " => Some(method::Delete), - b"CONNECT" => Some(method::Connect), - b"OPTIONS" => Some(method::Options), + b"GET " => Some(method::Method::Get), + b"PUT " => Some(method::Method::Put), + b"POST " => Some(method::Method::Post), + b"HEAD " => Some(method::Method::Head), + b"PATCH " => Some(method::Method::Patch), + b"TRACE " => Some(method::Method::Trace), + b"DELETE " => Some(method::Method::Delete), + b"CONNECT" => Some(method::Method::Connect), + b"OPTIONS" => Some(method::Method::Options), _ => None, }; @@ -346,7 +352,7 @@ pub fn read_method(stream: &mut R) -> HttpResult { (None, ext) if is_valid_method(buf) => { use std::str::raw; // We already checked that the buffer is ASCII - Ok(method::Extension(unsafe { raw::from_utf8(ext) }.trim().into_string())) + Ok(method::Method::Extension(unsafe { raw::from_utf8(ext) }.trim().into_string())) }, _ => Err(HttpMethodError) } @@ -367,7 +373,7 @@ pub fn read_uri(stream: &mut R) -> HttpResult { let mut s = String::new(); if b == STAR { try!(expect(stream.read_byte(), SP)); - return Ok(uri::Star) + return Ok(Star) } else { s.push(b as char); loop { @@ -386,10 +392,10 @@ pub fn read_uri(stream: &mut R) -> HttpResult { debug!("uri buf = {}", s); if s.as_slice().starts_with("/") { - Ok(uri::AbsolutePath(s)) + Ok(AbsolutePath(s)) } else if s.as_slice().contains("/") { match Url::parse(s.as_slice()) { - Ok(u) => Ok(uri::AbsoluteUri(u)), + Ok(u) => Ok(AbsoluteUri(u)), Err(_e) => { debug!("URL err {}", _e); Err(HttpUriError) @@ -401,7 +407,7 @@ pub fn read_uri(stream: &mut R) -> HttpResult { match Url::parse(temp.as_slice()) { Ok(_u) => { todo!("compare vs u.authority()"); - Ok(uri::Authority(s)) + Ok(Authority(s)) } Err(_e) => { debug!("URL err {}", _e); @@ -608,11 +614,14 @@ fn expect(r: IoResult, expected: u8) -> HttpResult<()> { mod tests { use std::io::{mod, MemReader, MemWriter}; use test::Bencher; - use uri::{RequestUri, Star, AbsoluteUri, AbsolutePath, Authority}; + use uri::RequestUri; + use uri::RequestUri::{Star, AbsoluteUri, AbsolutePath, Authority}; use method; use status; - use version::{HttpVersion, Http10, Http11, Http20}; - use {HttpResult, HttpVersionError}; + use version::HttpVersion; + use version::HttpVersion::{Http10, Http11, Http20}; + use HttpError::HttpVersionError; + use HttpResult; use url::Url; use super::{read_method, read_uri, read_http_version, read_header, RawHeaderLine, read_status}; @@ -627,15 +636,15 @@ mod tests { assert_eq!(read_method(&mut mem(s)), Ok(m)); } - read("GET /", method::Get); - read("POST /", method::Post); - read("PUT /", method::Put); - read("HEAD /", method::Head); - read("OPTIONS /", method::Options); - read("CONNECT /", method::Connect); - read("TRACE /", method::Trace); - read("PATCH /", method::Patch); - read("FOO /", method::Extension("FOO".to_string())); + read("GET /", method::Method::Get); + read("POST /", method::Method::Post); + read("PUT /", method::Method::Put); + read("HEAD /", method::Method::Head); + read("OPTIONS /", method::Method::Options); + read("CONNECT /", method::Method::Connect); + read("TRACE /", method::Method::Trace); + read("PATCH /", method::Method::Patch); + read("FOO /", method::Method::Extension("FOO".to_string())); } #[test] @@ -671,7 +680,7 @@ mod tests { assert_eq!(read_status(&mut mem(s)), result); } - read("200 OK\r\n", Ok(status::Ok)); + read("200 OK\r\n", Ok(status::StatusCode::Ok)); } #[test] @@ -687,7 +696,7 @@ mod tests { #[test] fn test_write_chunked() { use std::str::from_utf8; - let mut w = super::ChunkedWriter(MemWriter::new()); + let mut w = super::HttpWriter::ChunkedWriter(MemWriter::new()); w.write(b"foo bar").unwrap(); w.write(b"baz quux herp").unwrap(); let buf = w.end().unwrap().unwrap(); @@ -698,7 +707,7 @@ mod tests { #[test] fn test_write_sized() { use std::str::from_utf8; - let mut w = super::SizedWriter(MemWriter::new(), 8); + let mut w = super::HttpWriter::SizedWriter(MemWriter::new(), 8); w.write(b"foo bar").unwrap(); assert_eq!(w.write(b"baz"), Err(io::standard_error(io::ShortWrite(1)))); @@ -710,7 +719,7 @@ mod tests { #[bench] fn bench_read_method(b: &mut Bencher) { b.bytes = b"CONNECT ".len() as u64; - b.iter(|| assert_eq!(read_method(&mut mem("CONNECT ")), Ok(method::Connect))); + b.iter(|| assert_eq!(read_method(&mut mem("CONNECT ")), Ok(method::Method::Connect))); } } diff --git a/src/lib.rs b/src/lib.rs index 89f50888a2..93eef7ffed 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,5 @@ #![feature(macro_rules, phase, default_type_params, if_let, slicing_syntax, - tuple_indexing)] + tuple_indexing, globs)] #![deny(missing_docs)] #![deny(warnings)] #![experimental] @@ -140,8 +140,8 @@ extern crate cookie; pub use std::io::net::ip::{SocketAddr, IpAddr, Ipv4Addr, Ipv6Addr, Port}; pub use mimewrapper::mime; pub use url::Url; -pub use method::{Get, Head, Post, Delete}; -pub use status::{Ok, BadRequest, NotFound}; +pub use method::Method::{Get, Head, Post, Delete}; +pub use status::StatusCode::{Ok, BadRequest, NotFound}; pub use server::Server; use std::fmt; @@ -150,6 +150,8 @@ use std::io::IoError; use std::rt::backtrace; +use self::HttpError::{HttpMethodError, HttpUriError, HttpVersionError, + HttpHeaderError, HttpStatusError, HttpIoError}; macro_rules! todo( ($($arg:tt)*) => (if cfg!(not(ndebug)) { diff --git a/src/method.rs b/src/method.rs index 5990188413..af096f4ae3 100644 --- a/src/method.rs +++ b/src/method.rs @@ -2,6 +2,9 @@ use std::fmt; use std::str::FromStr; +use self::Method::{Options, Get, Post, Put, Delete, Head, Trace, Connect, Patch, + Extension}; + /// The Request Method (VERB) /// /// Currently includes 8 variants representing the 8 methods defined in diff --git a/src/net.rs b/src/net.rs index 68cb0ca360..9c2d0a3147 100644 --- a/src/net.rs +++ b/src/net.rs @@ -16,6 +16,8 @@ use typeable::Typeable; use openssl::ssl::{SslStream, SslContext, Sslv23}; use openssl::ssl::error::{SslError, StreamError, OpenSslErrors, SslSessionClosed}; +use self::HttpStream::{Http, Https}; + /// The write-status indicating headers have not been written. pub struct Fresh; diff --git a/src/server/request.rs b/src/server/request.rs index 0fe76d2e94..9c613a033e 100644 --- a/src/server/request.rs +++ b/src/server/request.rs @@ -11,7 +11,8 @@ use method; use header::Headers; use header::common::ContentLength; use http::{read_request_line}; -use http::{HttpReader, SizedReader, ChunkedReader}; +use http::HttpReader; +use http::HttpReader::{SizedReader, ChunkedReader}; use net::NetworkStream; use uri::RequestUri; diff --git a/src/server/response.rs b/src/server/response.rs index dea152aec1..02329679bf 100644 --- a/src/server/response.rs +++ b/src/server/response.rs @@ -8,7 +8,8 @@ use time::now_utc; use header; use header::common; -use http::{CR, LF, LINE_ENDING, HttpWriter, ThroughWriter, ChunkedWriter, SizedWriter}; +use http::{CR, LF, LINE_ENDING, HttpWriter}; +use http::HttpWriter::{ThroughWriter, ChunkedWriter, SizedWriter}; use status; use net::{NetworkStream, Fresh, Streaming}; use version; @@ -52,8 +53,8 @@ impl Response { /// Creates a new Response that can be used to write to a network stream. pub fn new(stream: S) -> Response { Response { - status: status::Ok, - version: version::Http11, + status: status::StatusCode::Ok, + version: version::HttpVersion::Http11, headers: header::Headers::new(), body: ThroughWriter(BufferedWriter::new(box stream as Box)) } @@ -85,7 +86,7 @@ impl Response { let encodings = match self.headers.get_mut::() { Some(&common::TransferEncoding(ref mut encodings)) => { //TODO: check if chunked is already in encodings. use HashSet? - encodings.push(common::transfer_encoding::Chunked); + encodings.push(common::transfer_encoding::Encoding::Chunked); false }, None => true @@ -93,7 +94,7 @@ impl Response { if encodings { self.headers.set::( - common::TransferEncoding(vec![common::transfer_encoding::Chunked])) + common::TransferEncoding(vec![common::transfer_encoding::Encoding::Chunked])) } } diff --git a/src/status.rs b/src/status.rs index 3c8f80de7e..7fe91bd68e 100644 --- a/src/status.rs +++ b/src/status.rs @@ -2,6 +2,11 @@ use std::fmt; use std::mem::transmute; +use self::StatusClass::{Informational, Success, Redirection, ClientError, + ServerError}; + +use self::StatusCode::*; + // shamelessly lifted from Teepee. I tried a few schemes, this really // does seem like the best. diff --git a/src/version.rs b/src/version.rs index 5270093725..1a978f0e7c 100644 --- a/src/version.rs +++ b/src/version.rs @@ -4,6 +4,8 @@ //! the `HttpVersion` enum. use std::fmt; +use self::HttpVersion::{Http09, Http10, Http11, Http20}; + /// Represents a version of the HTTP spec. #[deriving(PartialEq, PartialOrd)] pub enum HttpVersion { From 35b7ec132ef604969d44b2fdc9427d8b1a578d6f Mon Sep 17 00:00:00 2001 From: Jakob Gillich Date: Wed, 19 Nov 2014 22:00:53 +0100 Subject: [PATCH 2/3] refactor(status): replace glob with namespaced variants --- src/lib.rs | 2 +- src/status.rs | 1016 ++++++++++++++++++++++++------------------------- 2 files changed, 506 insertions(+), 512 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 93eef7ffed..088362a328 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,5 @@ #![feature(macro_rules, phase, default_type_params, if_let, slicing_syntax, - tuple_indexing, globs)] + tuple_indexing)] #![deny(missing_docs)] #![deny(warnings)] #![experimental] diff --git a/src/status.rs b/src/status.rs index 7fe91bd68e..f383ee7a8f 100644 --- a/src/status.rs +++ b/src/status.rs @@ -2,11 +2,6 @@ use std::fmt; use std::mem::transmute; -use self::StatusClass::{Informational, Success, Redirection, ClientError, - ServerError}; - -use self::StatusCode::*; - // shamelessly lifted from Teepee. I tried a few schemes, this really // does seem like the best. @@ -1049,510 +1044,510 @@ impl StatusCode { /// this canonical reason phrase really is the only reason phrase you’ll find. pub fn canonical_reason(&self) -> Option<&'static str> { match *self { - Continue => Some("Continue"), - SwitchingProtocols => Some("Switching Protocols"), - Processing => Some("Processing"), - Code103 => None, - Code104 => None, - Code105 => None, - Code106 => None, - Code107 => None, - Code108 => None, - Code109 => None, - Code110 => None, - Code111 => None, - Code112 => None, - Code113 => None, - Code114 => None, - Code115 => None, - Code116 => None, - Code117 => None, - Code118 => None, - Code119 => None, - Code120 => None, - Code121 => None, - Code122 => None, - Code123 => None, - Code124 => None, - Code125 => None, - Code126 => None, - Code127 => None, - Code128 => None, - Code129 => None, - Code130 => None, - Code131 => None, - Code132 => None, - Code133 => None, - Code134 => None, - Code135 => None, - Code136 => None, - Code137 => None, - Code138 => None, - Code139 => None, - Code140 => None, - Code141 => None, - Code142 => None, - Code143 => None, - Code144 => None, - Code145 => None, - Code146 => None, - Code147 => None, - Code148 => None, - Code149 => None, - Code150 => None, - Code151 => None, - Code152 => None, - Code153 => None, - Code154 => None, - Code155 => None, - Code156 => None, - Code157 => None, - Code158 => None, - Code159 => None, - Code160 => None, - Code161 => None, - Code162 => None, - Code163 => None, - Code164 => None, - Code165 => None, - Code166 => None, - Code167 => None, - Code168 => None, - Code169 => None, - Code170 => None, - Code171 => None, - Code172 => None, - Code173 => None, - Code174 => None, - Code175 => None, - Code176 => None, - Code177 => None, - Code178 => None, - Code179 => None, - Code180 => None, - Code181 => None, - Code182 => None, - Code183 => None, - Code184 => None, - Code185 => None, - Code186 => None, - Code187 => None, - Code188 => None, - Code189 => None, - Code190 => None, - Code191 => None, - Code192 => None, - Code193 => None, - Code194 => None, - Code195 => None, - Code196 => None, - Code197 => None, - Code198 => None, - Code199 => None, + StatusCode::Continue => Some("Continue"), + StatusCode::SwitchingProtocols => Some("Switching Protocols"), + StatusCode::Processing => Some("Processing"), + StatusCode::Code103 => None, + StatusCode::Code104 => None, + StatusCode::Code105 => None, + StatusCode::Code106 => None, + StatusCode::Code107 => None, + StatusCode::Code108 => None, + StatusCode::Code109 => None, + StatusCode::Code110 => None, + StatusCode::Code111 => None, + StatusCode::Code112 => None, + StatusCode::Code113 => None, + StatusCode::Code114 => None, + StatusCode::Code115 => None, + StatusCode::Code116 => None, + StatusCode::Code117 => None, + StatusCode::Code118 => None, + StatusCode::Code119 => None, + StatusCode::Code120 => None, + StatusCode::Code121 => None, + StatusCode::Code122 => None, + StatusCode::Code123 => None, + StatusCode::Code124 => None, + StatusCode::Code125 => None, + StatusCode::Code126 => None, + StatusCode::Code127 => None, + StatusCode::Code128 => None, + StatusCode::Code129 => None, + StatusCode::Code130 => None, + StatusCode::Code131 => None, + StatusCode::Code132 => None, + StatusCode::Code133 => None, + StatusCode::Code134 => None, + StatusCode::Code135 => None, + StatusCode::Code136 => None, + StatusCode::Code137 => None, + StatusCode::Code138 => None, + StatusCode::Code139 => None, + StatusCode::Code140 => None, + StatusCode::Code141 => None, + StatusCode::Code142 => None, + StatusCode::Code143 => None, + StatusCode::Code144 => None, + StatusCode::Code145 => None, + StatusCode::Code146 => None, + StatusCode::Code147 => None, + StatusCode::Code148 => None, + StatusCode::Code149 => None, + StatusCode::Code150 => None, + StatusCode::Code151 => None, + StatusCode::Code152 => None, + StatusCode::Code153 => None, + StatusCode::Code154 => None, + StatusCode::Code155 => None, + StatusCode::Code156 => None, + StatusCode::Code157 => None, + StatusCode::Code158 => None, + StatusCode::Code159 => None, + StatusCode::Code160 => None, + StatusCode::Code161 => None, + StatusCode::Code162 => None, + StatusCode::Code163 => None, + StatusCode::Code164 => None, + StatusCode::Code165 => None, + StatusCode::Code166 => None, + StatusCode::Code167 => None, + StatusCode::Code168 => None, + StatusCode::Code169 => None, + StatusCode::Code170 => None, + StatusCode::Code171 => None, + StatusCode::Code172 => None, + StatusCode::Code173 => None, + StatusCode::Code174 => None, + StatusCode::Code175 => None, + StatusCode::Code176 => None, + StatusCode::Code177 => None, + StatusCode::Code178 => None, + StatusCode::Code179 => None, + StatusCode::Code180 => None, + StatusCode::Code181 => None, + StatusCode::Code182 => None, + StatusCode::Code183 => None, + StatusCode::Code184 => None, + StatusCode::Code185 => None, + StatusCode::Code186 => None, + StatusCode::Code187 => None, + StatusCode::Code188 => None, + StatusCode::Code189 => None, + StatusCode::Code190 => None, + StatusCode::Code191 => None, + StatusCode::Code192 => None, + StatusCode::Code193 => None, + StatusCode::Code194 => None, + StatusCode::Code195 => None, + StatusCode::Code196 => None, + StatusCode::Code197 => None, + StatusCode::Code198 => None, + StatusCode::Code199 => None, - Ok => Some("OK"), - Created => Some("Created"), - Accepted => Some("Accepted"), - NonAuthoritativeInformation => Some("Non-Authoritative Information"), - NoContent => Some("No Content"), - ResetContent => Some("Reset Content"), - PartialContent => Some("Partial Content"), - MultiStatus => Some("Multi-Status"), - AlreadyReported => Some("Already Reported"), - Code209 => None, - Code210 => None, - Code211 => None, - Code212 => None, - Code213 => None, - Code214 => None, - Code215 => None, - Code216 => None, - Code217 => None, - Code218 => None, - Code219 => None, - Code220 => None, - Code221 => None, - Code222 => None, - Code223 => None, - Code224 => None, - Code225 => None, - ImUsed => Some("IM Used"), - Code227 => None, - Code228 => None, - Code229 => None, - Code230 => None, - Code231 => None, - Code232 => None, - Code233 => None, - Code234 => None, - Code235 => None, - Code236 => None, - Code237 => None, - Code238 => None, - Code239 => None, - Code240 => None, - Code241 => None, - Code242 => None, - Code243 => None, - Code244 => None, - Code245 => None, - Code246 => None, - Code247 => None, - Code248 => None, - Code249 => None, - Code250 => None, - Code251 => None, - Code252 => None, - Code253 => None, - Code254 => None, - Code255 => None, - Code256 => None, - Code257 => None, - Code258 => None, - Code259 => None, - Code260 => None, - Code261 => None, - Code262 => None, - Code263 => None, - Code264 => None, - Code265 => None, - Code266 => None, - Code267 => None, - Code268 => None, - Code269 => None, - Code270 => None, - Code271 => None, - Code272 => None, - Code273 => None, - Code274 => None, - Code275 => None, - Code276 => None, - Code277 => None, - Code278 => None, - Code279 => None, - Code280 => None, - Code281 => None, - Code282 => None, - Code283 => None, - Code284 => None, - Code285 => None, - Code286 => None, - Code287 => None, - Code288 => None, - Code289 => None, - Code290 => None, - Code291 => None, - Code292 => None, - Code293 => None, - Code294 => None, - Code295 => None, - Code296 => None, - Code297 => None, - Code298 => None, - Code299 => None, + StatusCode::Ok => Some("OK"), + StatusCode::Created => Some("Created"), + StatusCode::Accepted => Some("Accepted"), + StatusCode::NonAuthoritativeInformation => Some("Non-Authoritative Information"), + StatusCode::NoContent => Some("No Content"), + StatusCode::ResetContent => Some("Reset Content"), + StatusCode::PartialContent => Some("Partial Content"), + StatusCode::MultiStatus => Some("Multi-Status"), + StatusCode::AlreadyReported => Some("Already Reported"), + StatusCode::Code209 => None, + StatusCode::Code210 => None, + StatusCode::Code211 => None, + StatusCode::Code212 => None, + StatusCode::Code213 => None, + StatusCode::Code214 => None, + StatusCode::Code215 => None, + StatusCode::Code216 => None, + StatusCode::Code217 => None, + StatusCode::Code218 => None, + StatusCode::Code219 => None, + StatusCode::Code220 => None, + StatusCode::Code221 => None, + StatusCode::Code222 => None, + StatusCode::Code223 => None, + StatusCode::Code224 => None, + StatusCode::Code225 => None, + StatusCode::ImUsed => Some("IM Used"), + StatusCode::Code227 => None, + StatusCode::Code228 => None, + StatusCode::Code229 => None, + StatusCode::Code230 => None, + StatusCode::Code231 => None, + StatusCode::Code232 => None, + StatusCode::Code233 => None, + StatusCode::Code234 => None, + StatusCode::Code235 => None, + StatusCode::Code236 => None, + StatusCode::Code237 => None, + StatusCode::Code238 => None, + StatusCode::Code239 => None, + StatusCode::Code240 => None, + StatusCode::Code241 => None, + StatusCode::Code242 => None, + StatusCode::Code243 => None, + StatusCode::Code244 => None, + StatusCode::Code245 => None, + StatusCode::Code246 => None, + StatusCode::Code247 => None, + StatusCode::Code248 => None, + StatusCode::Code249 => None, + StatusCode::Code250 => None, + StatusCode::Code251 => None, + StatusCode::Code252 => None, + StatusCode::Code253 => None, + StatusCode::Code254 => None, + StatusCode::Code255 => None, + StatusCode::Code256 => None, + StatusCode::Code257 => None, + StatusCode::Code258 => None, + StatusCode::Code259 => None, + StatusCode::Code260 => None, + StatusCode::Code261 => None, + StatusCode::Code262 => None, + StatusCode::Code263 => None, + StatusCode::Code264 => None, + StatusCode::Code265 => None, + StatusCode::Code266 => None, + StatusCode::Code267 => None, + StatusCode::Code268 => None, + StatusCode::Code269 => None, + StatusCode::Code270 => None, + StatusCode::Code271 => None, + StatusCode::Code272 => None, + StatusCode::Code273 => None, + StatusCode::Code274 => None, + StatusCode::Code275 => None, + StatusCode::Code276 => None, + StatusCode::Code277 => None, + StatusCode::Code278 => None, + StatusCode::Code279 => None, + StatusCode::Code280 => None, + StatusCode::Code281 => None, + StatusCode::Code282 => None, + StatusCode::Code283 => None, + StatusCode::Code284 => None, + StatusCode::Code285 => None, + StatusCode::Code286 => None, + StatusCode::Code287 => None, + StatusCode::Code288 => None, + StatusCode::Code289 => None, + StatusCode::Code290 => None, + StatusCode::Code291 => None, + StatusCode::Code292 => None, + StatusCode::Code293 => None, + StatusCode::Code294 => None, + StatusCode::Code295 => None, + StatusCode::Code296 => None, + StatusCode::Code297 => None, + StatusCode::Code298 => None, + StatusCode::Code299 => None, - MultipleChoices => Some("Multiple Choices"), - MovedPermanently => Some("Moved Permanently"), - Found => Some("Found"), - SeeOther => Some("See Other"), - NotModified => Some("Not Modified"), - UseProxy => Some("Use Proxy"), - SwitchProxy => Some("Switch Proxy"), - TemporaryRedirect => Some("Temporary Redirect"), - PermanentRedirect => Some("Permanent Redirect"), - Code309 => None, - Code310 => None, - Code311 => None, - Code312 => None, - Code313 => None, - Code314 => None, - Code315 => None, - Code316 => None, - Code317 => None, - Code318 => None, - Code319 => None, - Code320 => None, - Code321 => None, - Code322 => None, - Code323 => None, - Code324 => None, - Code325 => None, - Code326 => None, - Code327 => None, - Code328 => None, - Code329 => None, - Code330 => None, - Code331 => None, - Code332 => None, - Code333 => None, - Code334 => None, - Code335 => None, - Code336 => None, - Code337 => None, - Code338 => None, - Code339 => None, - Code340 => None, - Code341 => None, - Code342 => None, - Code343 => None, - Code344 => None, - Code345 => None, - Code346 => None, - Code347 => None, - Code348 => None, - Code349 => None, - Code350 => None, - Code351 => None, - Code352 => None, - Code353 => None, - Code354 => None, - Code355 => None, - Code356 => None, - Code357 => None, - Code358 => None, - Code359 => None, - Code360 => None, - Code361 => None, - Code362 => None, - Code363 => None, - Code364 => None, - Code365 => None, - Code366 => None, - Code367 => None, - Code368 => None, - Code369 => None, - Code370 => None, - Code371 => None, - Code372 => None, - Code373 => None, - Code374 => None, - Code375 => None, - Code376 => None, - Code377 => None, - Code378 => None, - Code379 => None, - Code380 => None, - Code381 => None, - Code382 => None, - Code383 => None, - Code384 => None, - Code385 => None, - Code386 => None, - Code387 => None, - Code388 => None, - Code389 => None, - Code390 => None, - Code391 => None, - Code392 => None, - Code393 => None, - Code394 => None, - Code395 => None, - Code396 => None, - Code397 => None, - Code398 => None, - Code399 => None, + StatusCode::MultipleChoices => Some("Multiple Choices"), + StatusCode::MovedPermanently => Some("Moved Permanently"), + StatusCode::Found => Some("Found"), + StatusCode::SeeOther => Some("See Other"), + StatusCode::NotModified => Some("Not Modified"), + StatusCode::UseProxy => Some("Use Proxy"), + StatusCode::SwitchProxy => Some("Switch Proxy"), + StatusCode::TemporaryRedirect => Some("Temporary Redirect"), + StatusCode::PermanentRedirect => Some("Permanent Redirect"), + StatusCode::Code309 => None, + StatusCode::Code310 => None, + StatusCode::Code311 => None, + StatusCode::Code312 => None, + StatusCode::Code313 => None, + StatusCode::Code314 => None, + StatusCode::Code315 => None, + StatusCode::Code316 => None, + StatusCode::Code317 => None, + StatusCode::Code318 => None, + StatusCode::Code319 => None, + StatusCode::Code320 => None, + StatusCode::Code321 => None, + StatusCode::Code322 => None, + StatusCode::Code323 => None, + StatusCode::Code324 => None, + StatusCode::Code325 => None, + StatusCode::Code326 => None, + StatusCode::Code327 => None, + StatusCode::Code328 => None, + StatusCode::Code329 => None, + StatusCode::Code330 => None, + StatusCode::Code331 => None, + StatusCode::Code332 => None, + StatusCode::Code333 => None, + StatusCode::Code334 => None, + StatusCode::Code335 => None, + StatusCode::Code336 => None, + StatusCode::Code337 => None, + StatusCode::Code338 => None, + StatusCode::Code339 => None, + StatusCode::Code340 => None, + StatusCode::Code341 => None, + StatusCode::Code342 => None, + StatusCode::Code343 => None, + StatusCode::Code344 => None, + StatusCode::Code345 => None, + StatusCode::Code346 => None, + StatusCode::Code347 => None, + StatusCode::Code348 => None, + StatusCode::Code349 => None, + StatusCode::Code350 => None, + StatusCode::Code351 => None, + StatusCode::Code352 => None, + StatusCode::Code353 => None, + StatusCode::Code354 => None, + StatusCode::Code355 => None, + StatusCode::Code356 => None, + StatusCode::Code357 => None, + StatusCode::Code358 => None, + StatusCode::Code359 => None, + StatusCode::Code360 => None, + StatusCode::Code361 => None, + StatusCode::Code362 => None, + StatusCode::Code363 => None, + StatusCode::Code364 => None, + StatusCode::Code365 => None, + StatusCode::Code366 => None, + StatusCode::Code367 => None, + StatusCode::Code368 => None, + StatusCode::Code369 => None, + StatusCode::Code370 => None, + StatusCode::Code371 => None, + StatusCode::Code372 => None, + StatusCode::Code373 => None, + StatusCode::Code374 => None, + StatusCode::Code375 => None, + StatusCode::Code376 => None, + StatusCode::Code377 => None, + StatusCode::Code378 => None, + StatusCode::Code379 => None, + StatusCode::Code380 => None, + StatusCode::Code381 => None, + StatusCode::Code382 => None, + StatusCode::Code383 => None, + StatusCode::Code384 => None, + StatusCode::Code385 => None, + StatusCode::Code386 => None, + StatusCode::Code387 => None, + StatusCode::Code388 => None, + StatusCode::Code389 => None, + StatusCode::Code390 => None, + StatusCode::Code391 => None, + StatusCode::Code392 => None, + StatusCode::Code393 => None, + StatusCode::Code394 => None, + StatusCode::Code395 => None, + StatusCode::Code396 => None, + StatusCode::Code397 => None, + StatusCode::Code398 => None, + StatusCode::Code399 => None, - BadRequest => Some("Bad Request"), - Unauthorized => Some("Unauthorized"), - PaymentRequired => Some("Payment Required"), - Forbidden => Some("Forbidden"), - NotFound => Some("Not Found"), - MethodNotAllowed => Some("Method Not Allowed"), - NotAcceptable => Some("Not Acceptable"), - ProxyAuthenticationRequired => Some("Proxy Authentication Required"), - RequestTimeout => Some("Request Timeout"), - Conflict => Some("Conflict"), - Gone => Some("Gone"), - LengthRequired => Some("Length Required"), - PreconditionFailed => Some("Precondition Failed"), - RequestEntityTooLarge => Some("Request Entity Too Large"), - RequestUriTooLong => Some("Request-URI Too Long"), - UnsupportedMediaType => Some("Unsupported Media Type"), - RequestedRangeNotSatisfiable => Some("Requested Range Not Satisfiable"), - ExpectationFailed => Some("Expectation Failed"), - ImATeapot => Some("I'm a teapot"), - AuthenticationTimeout => Some("Authentication Timeout"), - Code420 => None, - Code421 => None, - UnprocessableEntity => Some("Unprocessable Entity"), - Locked => Some("Locked"), - FailedDependency => Some("Failed Dependency"), - UnorderedCollection => Some("Unordered Collection"), - UpgradeRequired => Some("Upgrade Required"), - Code427 => None, - PreconditionRequired => Some("Precondition Required"), - TooManyRequests => Some("Too Many Requests"), - Code430 => None, - RequestHeaderFieldsTooLarge => Some("Request Header Fields Too Large"), - Code432 => None, - Code433 => None, - Code434 => None, - Code435 => None, - Code436 => None, - Code437 => None, - Code438 => None, - Code439 => None, - Code440 => None, - Code441 => None, - Code442 => None, - Code443 => None, - Code444 => None, - Code445 => None, - Code446 => None, - Code447 => None, - Code448 => None, - Code449 => None, - Code450 => None, - UnavailableForLegalReasons => Some("Unavailable For Legal Reasons"), - Code452 => None, - Code453 => None, - Code454 => None, - Code455 => None, - Code456 => None, - Code457 => None, - Code458 => None, - Code459 => None, - Code460 => None, - Code461 => None, - Code462 => None, - Code463 => None, - Code464 => None, - Code465 => None, - Code466 => None, - Code467 => None, - Code468 => None, - Code469 => None, - Code470 => None, - Code471 => None, - Code472 => None, - Code473 => None, - Code474 => None, - Code475 => None, - Code476 => None, - Code477 => None, - Code478 => None, - Code479 => None, - Code480 => None, - Code481 => None, - Code482 => None, - Code483 => None, - Code484 => None, - Code485 => None, - Code486 => None, - Code487 => None, - Code488 => None, - Code489 => None, - Code490 => None, - Code491 => None, - Code492 => None, - Code493 => None, - Code494 => None, - Code495 => None, - Code496 => None, - Code497 => None, - Code498 => None, - Code499 => None, + StatusCode::BadRequest => Some("Bad Request"), + StatusCode::Unauthorized => Some("Unauthorized"), + StatusCode::PaymentRequired => Some("Payment Required"), + StatusCode::Forbidden => Some("Forbidden"), + StatusCode::NotFound => Some("Not Found"), + StatusCode::MethodNotAllowed => Some("Method Not Allowed"), + StatusCode::NotAcceptable => Some("Not Acceptable"), + StatusCode::ProxyAuthenticationRequired => Some("Proxy Authentication Required"), + StatusCode::RequestTimeout => Some("Request Timeout"), + StatusCode::Conflict => Some("Conflict"), + StatusCode::Gone => Some("Gone"), + StatusCode::LengthRequired => Some("Length Required"), + StatusCode::PreconditionFailed => Some("Precondition Failed"), + StatusCode::RequestEntityTooLarge => Some("Request Entity Too Large"), + StatusCode::RequestUriTooLong => Some("Request-URI Too Long"), + StatusCode::UnsupportedMediaType => Some("Unsupported Media Type"), + StatusCode::RequestedRangeNotSatisfiable => Some("Requested Range Not Satisfiable"), + StatusCode::ExpectationFailed => Some("Expectation Failed"), + StatusCode::ImATeapot => Some("I'm a teapot"), + StatusCode::AuthenticationTimeout => Some("Authentication Timeout"), + StatusCode::Code420 => None, + StatusCode::Code421 => None, + StatusCode::UnprocessableEntity => Some("Unprocessable Entity"), + StatusCode::Locked => Some("Locked"), + StatusCode::FailedDependency => Some("Failed Dependency"), + StatusCode::UnorderedCollection => Some("Unordered Collection"), + StatusCode::UpgradeRequired => Some("Upgrade Required"), + StatusCode::Code427 => None, + StatusCode::PreconditionRequired => Some("Precondition Required"), + StatusCode::TooManyRequests => Some("Too Many Requests"), + StatusCode::Code430 => None, + StatusCode::RequestHeaderFieldsTooLarge => Some("Request Header Fields Too Large"), + StatusCode::Code432 => None, + StatusCode::Code433 => None, + StatusCode::Code434 => None, + StatusCode::Code435 => None, + StatusCode::Code436 => None, + StatusCode::Code437 => None, + StatusCode::Code438 => None, + StatusCode::Code439 => None, + StatusCode::Code440 => None, + StatusCode::Code441 => None, + StatusCode::Code442 => None, + StatusCode::Code443 => None, + StatusCode::Code444 => None, + StatusCode::Code445 => None, + StatusCode::Code446 => None, + StatusCode::Code447 => None, + StatusCode::Code448 => None, + StatusCode::Code449 => None, + StatusCode::Code450 => None, + StatusCode::UnavailableForLegalReasons => Some("Unavailable For Legal Reasons"), + StatusCode::Code452 => None, + StatusCode::Code453 => None, + StatusCode::Code454 => None, + StatusCode::Code455 => None, + StatusCode::Code456 => None, + StatusCode::Code457 => None, + StatusCode::Code458 => None, + StatusCode::Code459 => None, + StatusCode::Code460 => None, + StatusCode::Code461 => None, + StatusCode::Code462 => None, + StatusCode::Code463 => None, + StatusCode::Code464 => None, + StatusCode::Code465 => None, + StatusCode::Code466 => None, + StatusCode::Code467 => None, + StatusCode::Code468 => None, + StatusCode::Code469 => None, + StatusCode::Code470 => None, + StatusCode::Code471 => None, + StatusCode::Code472 => None, + StatusCode::Code473 => None, + StatusCode::Code474 => None, + StatusCode::Code475 => None, + StatusCode::Code476 => None, + StatusCode::Code477 => None, + StatusCode::Code478 => None, + StatusCode::Code479 => None, + StatusCode::Code480 => None, + StatusCode::Code481 => None, + StatusCode::Code482 => None, + StatusCode::Code483 => None, + StatusCode::Code484 => None, + StatusCode::Code485 => None, + StatusCode::Code486 => None, + StatusCode::Code487 => None, + StatusCode::Code488 => None, + StatusCode::Code489 => None, + StatusCode::Code490 => None, + StatusCode::Code491 => None, + StatusCode::Code492 => None, + StatusCode::Code493 => None, + StatusCode::Code494 => None, + StatusCode::Code495 => None, + StatusCode::Code496 => None, + StatusCode::Code497 => None, + StatusCode::Code498 => None, + StatusCode::Code499 => None, - InternalServerError => Some("Internal Server Error"), - NotImplemented => Some("Not Implemented"), - BadGateway => Some("Bad Gateway"), - ServiceUnavailable => Some("Service Unavailable"), - GatewayTimeout => Some("Gateway Timeout"), - HttpVersionNotSupported => Some("HTTP Version Not Supported"), - VariantAlsoNegotiates => Some("Variant Also Negotiates"), - InsufficientStorage => Some("Insufficient Storage"), - LoopDetected => Some("Loop Detected"), - Code509 => None, - NotExtended => Some("Not Extended"), - NetworkAuthenticationRequired => Some("Network Authentication Required"), - Code512 => None, - Code513 => None, - Code514 => None, - Code515 => None, - Code516 => None, - Code517 => None, - Code518 => None, - Code519 => None, - Code520 => None, - Code521 => None, - Code522 => None, - Code523 => None, - Code524 => None, - Code525 => None, - Code526 => None, - Code527 => None, - Code528 => None, - Code529 => None, - Code530 => None, - Code531 => None, - Code532 => None, - Code533 => None, - Code534 => None, - Code535 => None, - Code536 => None, - Code537 => None, - Code538 => None, - Code539 => None, - Code540 => None, - Code541 => None, - Code542 => None, - Code543 => None, - Code544 => None, - Code545 => None, - Code546 => None, - Code547 => None, - Code548 => None, - Code549 => None, - Code550 => None, - Code551 => None, - Code552 => None, - Code553 => None, - Code554 => None, - Code555 => None, - Code556 => None, - Code557 => None, - Code558 => None, - Code559 => None, - Code560 => None, - Code561 => None, - Code562 => None, - Code563 => None, - Code564 => None, - Code565 => None, - Code566 => None, - Code567 => None, - Code568 => None, - Code569 => None, - Code570 => None, - Code571 => None, - Code572 => None, - Code573 => None, - Code574 => None, - Code575 => None, - Code576 => None, - Code577 => None, - Code578 => None, - Code579 => None, - Code580 => None, - Code581 => None, - Code582 => None, - Code583 => None, - Code584 => None, - Code585 => None, - Code586 => None, - Code587 => None, - Code588 => None, - Code589 => None, - Code590 => None, - Code591 => None, - Code592 => None, - Code593 => None, - Code594 => None, - Code595 => None, - Code596 => None, - Code597 => None, - Code598 => None, - Code599 => None, + StatusCode::InternalServerError => Some("Internal Server Error"), + StatusCode::NotImplemented => Some("Not Implemented"), + StatusCode::BadGateway => Some("Bad Gateway"), + StatusCode::ServiceUnavailable => Some("Service Unavailable"), + StatusCode::GatewayTimeout => Some("Gateway Timeout"), + StatusCode::HttpVersionNotSupported => Some("HTTP Version Not Supported"), + StatusCode::VariantAlsoNegotiates => Some("Variant Also Negotiates"), + StatusCode::InsufficientStorage => Some("Insufficient Storage"), + StatusCode::LoopDetected => Some("Loop Detected"), + StatusCode::Code509 => None, + StatusCode::NotExtended => Some("Not Extended"), + StatusCode::NetworkAuthenticationRequired => Some("Network Authentication Required"), + StatusCode::Code512 => None, + StatusCode::Code513 => None, + StatusCode::Code514 => None, + StatusCode::Code515 => None, + StatusCode::Code516 => None, + StatusCode::Code517 => None, + StatusCode::Code518 => None, + StatusCode::Code519 => None, + StatusCode::Code520 => None, + StatusCode::Code521 => None, + StatusCode::Code522 => None, + StatusCode::Code523 => None, + StatusCode::Code524 => None, + StatusCode::Code525 => None, + StatusCode::Code526 => None, + StatusCode::Code527 => None, + StatusCode::Code528 => None, + StatusCode::Code529 => None, + StatusCode::Code530 => None, + StatusCode::Code531 => None, + StatusCode::Code532 => None, + StatusCode::Code533 => None, + StatusCode::Code534 => None, + StatusCode::Code535 => None, + StatusCode::Code536 => None, + StatusCode::Code537 => None, + StatusCode::Code538 => None, + StatusCode::Code539 => None, + StatusCode::Code540 => None, + StatusCode::Code541 => None, + StatusCode::Code542 => None, + StatusCode::Code543 => None, + StatusCode::Code544 => None, + StatusCode::Code545 => None, + StatusCode::Code546 => None, + StatusCode::Code547 => None, + StatusCode::Code548 => None, + StatusCode::Code549 => None, + StatusCode::Code550 => None, + StatusCode::Code551 => None, + StatusCode::Code552 => None, + StatusCode::Code553 => None, + StatusCode::Code554 => None, + StatusCode::Code555 => None, + StatusCode::Code556 => None, + StatusCode::Code557 => None, + StatusCode::Code558 => None, + StatusCode::Code559 => None, + StatusCode::Code560 => None, + StatusCode::Code561 => None, + StatusCode::Code562 => None, + StatusCode::Code563 => None, + StatusCode::Code564 => None, + StatusCode::Code565 => None, + StatusCode::Code566 => None, + StatusCode::Code567 => None, + StatusCode::Code568 => None, + StatusCode::Code569 => None, + StatusCode::Code570 => None, + StatusCode::Code571 => None, + StatusCode::Code572 => None, + StatusCode::Code573 => None, + StatusCode::Code574 => None, + StatusCode::Code575 => None, + StatusCode::Code576 => None, + StatusCode::Code577 => None, + StatusCode::Code578 => None, + StatusCode::Code579 => None, + StatusCode::Code580 => None, + StatusCode::Code581 => None, + StatusCode::Code582 => None, + StatusCode::Code583 => None, + StatusCode::Code584 => None, + StatusCode::Code585 => None, + StatusCode::Code586 => None, + StatusCode::Code587 => None, + StatusCode::Code588 => None, + StatusCode::Code589 => None, + StatusCode::Code590 => None, + StatusCode::Code591 => None, + StatusCode::Code592 => None, + StatusCode::Code593 => None, + StatusCode::Code594 => None, + StatusCode::Code595 => None, + StatusCode::Code596 => None, + StatusCode::Code597 => None, + StatusCode::Code598 => None, + StatusCode::Code599 => None, } } @@ -1561,15 +1556,15 @@ impl StatusCode { let code = *self as u16; // Range of possible values: 100..599. // We could match 100..199 &c., but this way we avoid unreachable!() at the end. if code < 200 { - Informational + StatusClass::Informational } else if code < 300 { - Success + StatusClass::Success } else if code < 400 { - Redirection + StatusClass::Redirection } else if code < 500 { - ClientError + StatusClass::ClientError } else { - ServerError + StatusClass::ServerError } } } @@ -1771,4 +1766,3 @@ impl ToPrimitive for StatusClass { Some(*self as u64) } } - From f3e1baea9f236b608a41185f918e56f5e77ab022 Mon Sep 17 00:00:00 2001 From: Jakob Gillich Date: Wed, 19 Nov 2014 22:01:39 +0100 Subject: [PATCH 3/3] fix(http): is_valid_method expects &-ptr --- examples/hello.rs | 2 +- src/http.rs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/hello.rs b/examples/hello.rs index 6d58c52950..c7a06b5472 100644 --- a/examples/hello.rs +++ b/examples/hello.rs @@ -6,7 +6,7 @@ use std::io::net::ip::Ipv4Addr; static PHRASE: &'static [u8] = b"Hello World!"; fn hyper_handle(mut incoming: hyper::server::Incoming) { - let mut pool = TaskPool::new(100); + let pool = TaskPool::new(100); for conn in incoming { pool.execute(proc() { diff --git a/src/http.rs b/src/http.rs index b7f06d49ff..8c539419b8 100644 --- a/src/http.rs +++ b/src/http.rs @@ -327,11 +327,11 @@ pub fn read_method(stream: &mut R) -> HttpResult { let mut buf = [SP, ..16]; if !try!(read_until_space(stream, &mut buf)) { - return Err(HttpMethodError); + return Err(HttpMethodError); } debug!("method buf = {}", buf[].to_ascii()); - + let maybe_method = match buf[0..7] { b"GET " => Some(method::Method::Get), b"PUT " => Some(method::Method::Put), @@ -349,7 +349,7 @@ pub fn read_method(stream: &mut R) -> HttpResult { match (maybe_method, buf[]) { (Some(method), _) => Ok(method), - (None, ext) if is_valid_method(buf) => { + (None, ext) if is_valid_method(&buf) => { use std::str::raw; // We already checked that the buffer is ASCII Ok(method::Method::Extension(unsafe { raw::from_utf8(ext) }.trim().into_string())) @@ -629,7 +629,7 @@ mod tests { fn mem(s: &str) -> MemReader { MemReader::new(s.as_bytes().to_vec()) } - + #[test] fn test_read_method() { fn read(s: &str, m: method::Method) {