1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
use serde::Deserialize;

#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PlatformDataDto {
    pub id: String,
    pub name: String,
    pub locales: Vec<String>,
    pub maintenances: Vec<StatusDto>,
    pub incidents: Vec<StatusDto>,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StatusDto {
    pub id: i32,
    pub maintenance_status: MaintenanceStatus,
    pub incident_severity: IncidentSeverity,
    pub titles: Vec<ContentDto>,
    pub updates: Vec<UpdateDto>,
    pub created_at: String,
    pub archive_at: Option<String>,
    pub updated_at: Option<String>,
    pub platforms: Vec<Platform>,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum MaintenanceStatus {
    Scheduled,
    InProgress,
    Complete,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum IncidentSeverity {
    Info,
    Warning,
    Critical,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ContentDto {
    pub locale: String,
    pub content: String,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UpdateDto {
    pub id: i32,
    pub author: String,
    pub publish: bool,
    pub publish_location: Vec<PublishLocation>,
    pub translations: Vec<ContentDto>,
    pub created_at: String,
    pub updated_at: String,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum PublishLocation {
    RiotClient,
    RiotStatus,
    Game,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum Platform {
    Windows,
    Macos,
    Android,
    Ios,
    Ps4,
    Xbone,
    Switch,
}