#[derive(Debug, Serialize, Deserialize)]
pub struct CatalogResponse<T> {
pub board: String,
pub threads: Vec<T>,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct CatalogThread {
pub comment: String,
pub lasthit: i64,
pub num: String,
pub posts_count: i64,
pub score: f64,
pub subject: String,
pub timestamp: i64,
pub views: i64,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ThreadResponse<T> {
#[serde(rename = "Board")]
pub board: String,
#[serde(rename = "BoardInfo")]
pub board_info: String,
#[serde(rename = "BoardInfoOuter")]
pub board_info_outer: String,
#[serde(rename = "BoardName")]
pub board_name: String,
pub advert_bottom_image: String,
pub advert_bottom_link: String,
pub advert_mobile_image: String,
pub advert_mobile_link: String,
pub advert_top_image: String,
pub advert_top_link: String,
pub board_banner_image: String,
pub board_banner_link: String,
pub bump_limit: i64,
pub current_thread: String,
pub default_name: String,
pub enable_dices: i64,
pub enable_flags: i64,
pub enable_icons: i64,
pub enable_images: i64,
pub enable_likes: i64,
pub enable_names: i64,
pub enable_oekaki: i64,
pub enable_posting: i64,
pub enable_sage: i64,
pub enable_shield: i64,
pub enable_subject: i64,
pub enable_thread_tags: i64,
pub enable_trips: i64,
pub enable_video: i64,
pub files_count: i64,
pub is_board: i64,
pub is_closed: i64,
pub is_index: i64,
pub max_comment: i64,
pub max_files_size: i64,
pub max_num: i64,
pub news_abu: Vec<NewsAbu>,
pub posts_count: i64,
pub threads: Vec<T>,
pub title: String,
pub top: Vec<TopBoards>,
pub unique_posters: String,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct Thread {
pub posts: Vec<Post>,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct Post {
pub banned: i64,
pub closed: i64,
pub comment: Option<String>,
pub date: String,
pub email: Option<String>,
pub endless: i64,
pub files: Vec<File>,
pub lasthit: i64,
pub name: String,
pub num: i64,
pub number: i64,
pub op: i64,
pub parent: String,
pub sticky: i64,
pub subject: Option<String>,
pub tags: Option<String>,
pub timestamp: i64,
pub trip: String,
}
#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
pub struct File {
pub displayname: Option<String>,
pub fullname: Option<String>,
pub height: i64,
pub md5: Option<String>,
pub name: Option<String>,
pub nsfw: Option<i64>,
pub path: String,
pub size: i64,
pub thumbnail: String,
pub tn_height: i64,
pub tn_width: i64,
#[serde(rename = "type")]
pub file_type: i64,
pub width: i64,
pub duration: Option<String>,
pub duration_secs: Option<i64>,
}
impl File {
pub fn get_type(&self) -> FileType {
match self.file_type {
1 | 2 => FileType::Image,
6 | 10 => FileType::Video,
100 => FileType::Sticker,
_ => FileType::Image,
}
}
}
#[derive(Debug, Clone, PartialEq)]
pub enum FileType {
Video,
Image,
Sticker,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct NewsAbu {
pub date: String,
pub num: i64,
pub subject: String,
pub views: i64,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct TopBoards {
pub board: String,
pub info: String,
pub name: String,
}