imgurx/src/structs.rs

71 lines
1.4 KiB
Rust
Raw Normal View History

2021-04-25 12:52:40 +00:00
//use std::fmt;
use serde::Deserialize;
extern crate reqwest;
extern crate serde_json;
#[derive(Debug, Deserialize)]
pub struct Album {
pub title: String,
pub is_mature: bool,
pub media: Vec<Media>,
}
#[derive(Debug, Deserialize)]
pub struct Media {
pub r#type: String,
pub url: String,
pub width: u32,
pub height: u32,
pub metadata: Metadata,
}
#[derive(Debug, Deserialize)]
pub struct Metadata {
pub description: String,
pub duration: f32,
}
#[derive(Debug)]
pub enum Error {
Reqwest(reqwest::Error),
SerdeJSON(serde_json::Error),
APIErrors(APIErrors),
}
impl From<reqwest::Error> for Error {
#[inline]
fn from(error: reqwest::Error) -> Error {
Error::Reqwest(error)
}
}
impl From<serde_json::Error> for Error {
#[inline]
fn from(error: serde_json::Error) -> Error {
Error::SerdeJSON(error)
}
}
//impl fmt::Display for Error {
// fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
// formatter.write_str(&match self {
// Error::Reqwest(err) => format!("reqwest: {}", err),
// Error::SerdeJSON(err) => format!("serde_json: {}", err),
// Error::ApiErrors(err) =>
// })
// }
//}
#[derive(Debug, Deserialize)]
pub struct APIErrors {
pub errors: Vec<APIError>,
}
#[derive(Debug, Deserialize)]
pub struct APIError {
pub id: String,
pub code: String,
pub status: String,
pub detail: String,
}