dialtone_reqwest 0.1.0

Dialtone HTTP Reqwest Client Library
Documentation
use reqwest::StatusCode;
use thiserror::Error;

#[derive(Error, Debug)]
pub enum DtReqwestError {
    #[error("authentication is required first")]
    AuthenticationRequired,
    #[error("request parameters or input is nonsensical")]
    BadRequest,
    #[error(transparent)]
    ReqwestError(#[from] reqwest::Error),
}

impl DtReqwestError {
    pub fn reqwest_error(self) -> Option<reqwest::Error> {
        match self {
            DtReqwestError::AuthenticationRequired => None,
            DtReqwestError::BadRequest => None,
            DtReqwestError::ReqwestError(e) => Some(e),
        }
    }

    pub fn status_code(self) -> StatusCode {
        match self {
            DtReqwestError::AuthenticationRequired => StatusCode::UNAUTHORIZED,
            DtReqwestError::BadRequest => StatusCode::BAD_REQUEST,
            DtReqwestError::ReqwestError(e) => e.status().unwrap(),
        }
    }
}