cookies/
error.rs

1use std::fmt;
2
3/// Error type when failing to parse or build a `Cookie`.
4#[derive(Debug)]
5pub struct Error {
6    kind: Kind,
7}
8
9#[derive(Debug)]
10enum Kind {
11    InvalidName,
12    InvalidValue,
13    InvalidPath,
14    InvalidDomain,
15    TooLong,
16}
17
18// ===== impl Error =====
19
20impl Error {
21    pub(crate) fn invalid_name() -> Error {
22        Error {
23            kind: Kind::InvalidName,
24        }
25    }
26
27    pub(crate) fn invalid_value() -> Error {
28        Error {
29            kind: Kind::InvalidValue,
30        }
31    }
32
33    pub(crate) fn invalid_path() -> Error {
34        Error {
35            kind: Kind::InvalidPath,
36        }
37    }
38
39    pub(crate) fn invalid_domain() -> Error {
40        Error {
41            kind: Kind::InvalidDomain,
42        }
43    }
44
45    pub(crate) fn too_long() -> Error {
46        Error {
47            kind: Kind::TooLong,
48        }
49    }
50}
51
52impl fmt::Display for Error {
53    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
54        match self.kind {
55            Kind::InvalidName => f.write_str("cookie name contains invalid character"),
56            Kind::InvalidValue => f.write_str("cookie value contains invalid character"),
57            Kind::InvalidPath => f.write_str("cookie path is invalid"),
58            Kind::InvalidDomain => f.write_str("cookie domain is invalid"),
59            Kind::TooLong => f.write_str("cookie string is too long"),
60        }
61    }
62}
63
64impl std::error::Error for Error {}