1#[derive(Debug, thiserror::Error)]
2pub enum MooError {
3 #[error("empty message")]
4 Empty,
5 #[error("missing protocol prefix: expected \"MOO/1\", got {0:?}")]
6 InvalidProtocol(String),
7 #[error("missing verb in first line")]
8 MissingVerb,
9 #[error("unknown verb: {0:?}")]
10 UnknownVerb(String),
11 #[error("missing name in first line")]
12 MissingName,
13 #[error("missing required header: Request-Id")]
14 MissingRequestId,
15 #[error("invalid Request-Id: {0:?}")]
16 InvalidRequestId(String),
17 #[error("Content-Length present but Content-Type missing")]
18 ContentLengthWithoutContentType,
19 #[error("invalid Content-Length: {0:?}")]
20 InvalidContentLength(String),
21 #[error("body length {actual} does not match Content-Length {expected}")]
22 BodyLengthMismatch { expected: usize, actual: usize },
23 #[error("invalid UTF-8 in headers")]
24 InvalidHeaderUtf8,
25 #[error("malformed header line: {0:?}")]
26 MalformedHeader(String),
27 #[error("invalid JSON body: {0}")]
28 InvalidJson(#[from] serde_json::Error),
29 #[error("WebSocket error: {0}")]
30 WebSocket(String),
31 #[error("connection closed")]
32 ConnectionClosed,
33}