asterisk-ari-client-rs 0.1.3

Simple Asterisk ARI library
Documentation
use reqwest::header::InvalidHeaderValue;
use reqwest::Error as ReqwError;
use reqwest::StatusCode;
use std::result;
use tokio_tungstenite::tungstenite::Error as WSError;
use url::ParseError;

#[derive(Debug)]
pub enum Error {
    Serde(serde_json::Error),
    Utf8(std::string::FromUtf8Error),
    Api(ApiError),
    HttpInvalidHeader(InvalidHeaderValue),
    Http(ReqwError),
    UrlParse(ParseError),
    Websocket(WSError),
}

impl Error {
    pub fn new(code: StatusCode, content: Option<String>) -> Self {
        Error::Api(ApiError { code, content })
    }
}

pub type Result<T> = result::Result<T, Error>;

#[derive(Debug)]
pub struct ApiError {
    pub code: StatusCode,
    pub content: Option<String>,
}

impl From<serde_json::Error> for Error {
    fn from(e: serde_json::Error) -> Self {
        Error::Serde(e)
    }
}

impl From<std::string::FromUtf8Error> for Error {
    fn from(e: std::string::FromUtf8Error) -> Self {
        Error::Utf8(e)
    }
}

impl From<ParseError> for Error {
    fn from(e: ParseError) -> Self {
        Error::UrlParse(e)
    }
}

impl From<WSError> for Error {
    fn from(e: WSError) -> Self {
        Error::Websocket(e)
    }
}

impl From<InvalidHeaderValue> for Error {
    fn from(e: InvalidHeaderValue) -> Self {
        Error::HttpInvalidHeader(e)
    }
}

impl From<ReqwError> for Error {
    fn from(e: ReqwError) -> Self {
        Error::Http(e)
    }
}