xitca_http/h1/proto/
error.rs

1use httparse::Error as HttparseError;
2
3#[derive(Debug)]
4pub enum ProtoError {
5    HeaderName,
6    HeaderValue,
7    HeaderTooLarge,
8    Method,
9    Uri,
10    NewLine,
11    Status,
12    Token,
13    Version,
14}
15
16impl From<HttparseError> for ProtoError {
17    fn from(e: HttparseError) -> Self {
18        match e {
19            HttparseError::HeaderName => Self::HeaderName,
20            HttparseError::HeaderValue => Self::HeaderValue,
21            // Too many headers would be treated the same as header too large error.
22            HttparseError::TooManyHeaders => Self::HeaderTooLarge,
23            HttparseError::NewLine => Self::NewLine,
24            HttparseError::Status => Self::Status,
25            HttparseError::Token => Self::Token,
26            HttparseError::Version => Self::Version,
27        }
28    }
29}
30
31impl From<http::method::InvalidMethod> for ProtoError {
32    fn from(_: http::method::InvalidMethod) -> Self {
33        Self::Method
34    }
35}
36
37impl From<http::uri::InvalidUri> for ProtoError {
38    fn from(_: http::uri::InvalidUri) -> Self {
39        Self::Uri
40    }
41}
42
43impl From<http::status::InvalidStatusCode> for ProtoError {
44    fn from(_: http::status::InvalidStatusCode) -> Self {
45        Self::Status
46    }
47}