rust_anilist/models/
link.rs1use serde::{Deserialize, Serialize};
7
8use super::{Color, Language};
9
10#[derive(Debug, Default, Clone, PartialEq, Deserialize, Serialize)]
12#[serde(rename_all(deserialize = "camelCase"))]
13pub struct Link {
14 pub id: Option<i64>,
16 pub title: Option<String>,
18 pub thumbnail: Option<String>,
20 pub url: String,
22 pub site: String,
24 pub site_id: Option<i64>,
26 pub link_type: Option<LinkType>,
28 pub language: Option<Language>,
30 pub color: Option<Color>,
32 pub icon: Option<String>,
34 pub notes: Option<String>,
36 pub is_disabled: Option<bool>,
38}
39
40#[derive(Debug, Default, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
42#[serde(rename_all(deserialize = "UPPERCASE"))]
43pub enum LinkType {
44 #[default]
46 Info,
47 Streaming,
49 Social,
51}
52
53impl std::fmt::Display for LinkType {
54 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
55 match self {
56 LinkType::Info => write!(f, "Info"),
57 LinkType::Streaming => write!(f, "Streaming"),
58 LinkType::Social => write!(f, "Social"),
59 }
60 }
61}