Skip to main content

roon_moo/
error.rs

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}