asterisk_ari_client_rs/
errors.rs1use reqwest::header::InvalidHeaderValue;
2use reqwest::Error as ReqwError;
3use reqwest::StatusCode;
4use std::result;
5use tokio_tungstenite::tungstenite::Error as WSError;
6use url::ParseError;
7
8#[derive(Debug)]
9pub enum Error {
10 Serde(serde_json::Error),
11 Utf8(std::string::FromUtf8Error),
12 Api(ApiError),
13 HttpInvalidHeader(InvalidHeaderValue),
14 Http(ReqwError),
15 UrlParse(ParseError),
16 Websocket(WSError),
17}
18
19impl Error {
20 pub fn new(code: StatusCode, content: Option<String>) -> Self {
21 Error::Api(ApiError { code, content })
22 }
23}
24
25pub type Result<T> = result::Result<T, Error>;
26
27#[derive(Debug)]
28pub struct ApiError {
29 pub code: StatusCode,
30 pub content: Option<String>,
31}
32
33impl From<serde_json::Error> for Error {
34 fn from(e: serde_json::Error) -> Self {
35 Error::Serde(e)
36 }
37}
38
39impl From<std::string::FromUtf8Error> for Error {
40 fn from(e: std::string::FromUtf8Error) -> Self {
41 Error::Utf8(e)
42 }
43}
44
45impl From<ParseError> for Error {
46 fn from(e: ParseError) -> Self {
47 Error::UrlParse(e)
48 }
49}
50
51impl From<WSError> for Error {
52 fn from(e: WSError) -> Self {
53 Error::Websocket(e)
54 }
55}
56
57impl From<InvalidHeaderValue> for Error {
58 fn from(e: InvalidHeaderValue) -> Self {
59 Error::HttpInvalidHeader(e)
60 }
61}
62
63impl From<ReqwError> for Error {
64 fn from(e: ReqwError) -> Self {
65 Error::Http(e)
66 }
67}