amqp_api_shared/
request_result_error.rs

1use std::fmt;
2
3use serde::{Deserialize, Serialize};
4
5/// Error kinds copied from HTTP status codes
6#[derive(Copy, Clone, Deserialize, Serialize, PartialEq, Debug)]
7pub enum RequestResultErrorKind {
8    BadRequest,
9    Unauthorized,
10    PaymentRequired,
11    Forbidden,
12    NotFound,
13    MethodNotAllowed,
14    NotAcceptable,
15    ProxyAuthenticationRequired,
16    RequestTimeout,
17    Conflict,
18    Gone,
19    LengthRequired,
20    PreconditionFailed,
21    PayloadTooLarge,
22    URITooLong,
23    UnsupportedMediaType,
24    RangeNotSatisfiable,
25    ImATeapot,
26    MisdirectedRequest,
27    UnprocessableContent,
28    Locked,
29    FailedDependency,
30    TooEarly,
31    UpgradeRequired,
32    PreconditionRequired,
33    TooManyRequests,
34    RequestHeaderFieldsTooLarge,
35    UnavailableForLegalReasons,
36    InternalServerError,
37    NotImplemented,
38    BadGateway,
39    ServiceUnavailable,
40    GatewayTimeout,
41    VariantAlsoNegotiates,
42    InsufficientStorage,
43    LoopDetected,
44    NotExtended,
45    NetworkAuthenticationRequired,
46}
47
48#[derive(Deserialize, Serialize, Debug)]
49pub struct RequestResultError {
50    kind: RequestResultErrorKind,
51    message: String,
52}
53
54impl RequestResultError {
55    pub fn new(kind: RequestResultErrorKind, message: impl Into<String>) -> RequestResultError {
56        RequestResultError {
57            kind,
58            message: message.into(),
59        }
60    }
61
62    pub fn kind(&self) -> RequestResultErrorKind {
63        self.kind
64    }
65
66    pub fn message(&self) -> &str {
67        &self.message
68    }
69}
70
71impl fmt::Display for RequestResultError {
72    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
73        write!(f, "{}", self.message)
74    }
75}