opentalk_client_shared/
api_error.rs1use std::error::Error;
7
8use bytes::Bytes;
9use snafu::prelude::*;
10
11#[derive(Debug, Snafu)]
13#[snafu(visibility(pub))]
14#[non_exhaustive]
15pub enum ApiError<E>
16where
17 E: Error + Send + Sync + 'static,
18{
19 #[snafu(display("client error: {}", source))]
21 Client {
22 source: E,
24 },
25
26 #[snafu(context(false), display("failed to parse url: {}", source))]
28 UrlParse {
29 source: url::ParseError,
31 },
32
33 #[snafu(context(false), display("failed to parse uri: {}", source))]
35 UriParse {
36 source: http::uri::InvalidUri,
38 },
39
40 #[snafu(context(false), display("could not parse JSON response: {}", source))]
42 Json {
43 source: serde_json::Error,
45 },
46
47 #[snafu(display("opentalk server error: {}", msg))]
49 OpenTalk {
50 msg: String,
52 },
53
54 #[snafu(display("opentalk internal server error {}", status))]
56 OpenTalkService {
57 status: http::StatusCode,
59 data: Bytes,
61 },
62
63 #[snafu(display("could not parse {} data from JSON: {}", typename, source))]
65 DataType {
66 source: serde_json::Error,
68 typename: &'static str,
70 },
71
72 #[snafu(
74 context(false),
75 display("error in http-request-derive crate: {}", source)
76 )]
77 HttpRequestDerive {
78 source: http_request_derive::Error,
80 },
81
82 #[snafu(context(false), display("could not build HTTP request: {}", source))]
84 Request {
85 source: http::Error,
87 },
88
89 #[snafu(display("trying to perfom an unauthorized request"))]
91 Unauthorized,
92
93 #[snafu(whatever)]
95 Custom {
96 message: String,
98
99 #[snafu(source(from(Box<dyn Error + Send + Sync>, Some)))]
101 source: Option<Box<dyn Error + Send + Sync>>,
102 },
103}