imgurian 0.5.0

Imgur API client.
Documentation
use imgur_openapi::apis;
use std::io;

#[derive(Debug)]
pub enum Error {
    ApiOthers,
    ApiResponse(Response),
    Io(io::Error),
    JsonSerialize(serde_json::Error),
}

#[derive(Debug)]
pub struct Response {
    content: String,
    status: u16,
}

impl From<io::Error> for Error {
    fn from(source: io::Error) -> Self {
        Error::Io(source)
    }
}

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

impl<T> From<apis::Error<T>> for Error {
    fn from(source: apis::Error<T>) -> Self {
        match source {
            apis::Error::ResponseError(apis::ResponseContent {
                status, content, ..
            }) => Error::ApiResponse(Response {
                status: status.as_u16(),
                content,
            }),
            _ => Error::ApiOthers,
        }
    }
}