summaryrefslogtreecommitdiffstats
path: root/third_party/rust/bhttp/src/err.rs
blob: 5ee136f960116ccb89421857fd8adc3faf18d82d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use thiserror::Error;

#[derive(Error, Debug)]
pub enum Error {
    #[error("a request used the CONNECT method")]
    ConnectUnsupported,
    #[error("a field contained invalid Unicode: {0}")]
    CharacterEncoding(#[from] std::string::FromUtf8Error),
    #[error("a field contained an integer value that was out of range: {0}")]
    IntRange(#[from] std::num::TryFromIntError),
    #[error("the mode of the message was invalid")]
    InvalidMode,
    #[error("IO error {0}")]
    Io(#[from] std::io::Error),
    #[error("a field or line was missing a necessary character 0x{0:x}")]
    Missing(u8),
    #[error("a URL was missing a key component")]
    MissingUrlComponent,
    #[error("an obs-fold line was the first line of a field section")]
    ObsFold,
    #[error("a field contained a non-integer value: {0}")]
    ParseInt(#[from] std::num::ParseIntError),
    #[error("a field was truncated")]
    Truncated,
    #[error("a message included the Upgrade field")]
    UpgradeUnsupported,
    #[error("a URL could not be parsed into components: {0}")]
    #[cfg(feature = "read-http")]
    UrlParse(#[from] url::ParseError),
}

#[cfg(any(
    feature = "read-http",
    feature = "write-http",
    feature = "read-bhttp",
    feature = "write-bhttp"
))]
pub type Res<T> = Result<T, Error>;