use core::fmt;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Rule34Post {
pub id: u32,
pub score: u32,
pub width: u32,
pub height: u32,
pub preview_url: Option<String>,
pub sample_url: Option<String>,
pub file_url: String,
pub directory: u32,
pub tags: String,
pub image: String,
pub source: String,
pub rating: Rule34Rating,
pub has_notes: bool,
pub sample: bool,
pub sample_width: Option<u32>,
pub sample_height: Option<u32>,
pub parent_id: u32,
pub owner: String,
pub comment_count: u32,
pub change: u32,
pub hash: String,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "lowercase")]
pub enum Rule34Rating {
Explicit,
Questionable,
Safe,
}
impl From<Rule34Rating> for String {
fn from(rating: Rule34Rating) -> String {
rating.to_string()
}
}
impl fmt::Display for Rule34Rating {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let lovercase_tag = format!("{:?}", self).to_lowercase();
write!(f, "{lovercase_tag}")
}
}