anilist_moe 0.4.0

Anilist_Moe is a Rust Wrapper for the Anilist API. This library allows you to seamlessly interact with Anilist's Public API with and without authentication. This currently supports Anime, Manga, Users, Staff, Forum, Threads, Recommendations, Reviews and User Activities
Documentation
use crate::{
    enums::activity::ActivityType,
    objects::{media::Media, user::User},
};
use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;

#[skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ActivityReply {
    pub id: i32,
    pub user_id: Option<i32>,
    pub activity_id: Option<i32>,
    pub text: Option<String>,
    pub like_count: Option<i32>,
    pub is_liked: Option<bool>,
    pub created_at: Option<i32>,
    pub user: Option<User>,
    pub likes: Option<Vec<User>>,
}

#[skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TextActivity {
    pub id: i32,
    pub user_id: Option<i32>,
    #[serde(rename = "type")]
    pub activity_type: Option<ActivityType>,
    pub reply_count: Option<i32>,
    pub text: Option<String>,
    pub site_url: Option<String>,
    pub is_locked: Option<bool>,
    pub is_subscribed: Option<bool>,
    pub like_count: Option<i32>,
    pub is_liked: Option<bool>,
    pub is_pinned: Option<bool>,
    pub created_at: Option<i32>,
    pub user: Option<User>,
    pub replies: Option<Vec<ActivityReply>>,
    pub likes: Option<Vec<User>>,
}

#[skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListActivity {
    pub id: i32,
    pub user_id: Option<i32>,
    #[serde(rename = "type")]
    pub activity_type: Option<ActivityType>,
    pub reply_count: Option<i32>,
    pub status: Option<String>,
    pub progress: Option<String>,
    pub is_locked: Option<bool>,
    pub is_subscribed: Option<bool>,
    pub like_count: Option<i32>,
    pub is_liked: Option<bool>,
    pub is_pinned: Option<bool>,
    pub site_url: Option<String>,
    pub created_at: Option<i32>,
    pub user: Option<User>,
    pub media: Option<Media>,
    pub replies: Option<Vec<ActivityReply>>,
    pub likes: Option<Vec<User>>,
}

#[skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MessageActivity {
    pub id: i32,
    pub recipient_id: Option<i32>,
    pub messenger_id: Option<i32>,
    #[serde(rename = "type")]
    pub activity_type: Option<ActivityType>,
    pub reply_count: Option<i32>,
    pub message: Option<String>,
    pub is_locked: Option<bool>,
    pub is_subscribed: Option<bool>,
    pub like_count: Option<i32>,
    pub is_liked: Option<bool>,
    pub is_private: Option<bool>,
    pub site_url: Option<String>,
    pub created_at: Option<i32>,
    pub recipient: Option<User>,
    pub messenger: Option<User>,
    pub replies: Option<Vec<ActivityReply>>,
    pub likes: Option<Vec<User>>,
}

#[skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListActivityOption {
    pub disabled: Option<bool>,
    pub activity_type: Option<ActivityType>,
}