dvach_api 0.0.2

Методы для работы с API 'Двач'
Documentation
#[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 {
    /// mp4, webm
    Video,
    /// jpg, png, gif
    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,
}