speedrun_api/types/
users.rs1use serde::Deserialize;
2
3use crate::api::users::UserId;
4
5use super::{Link, Names};
6
7#[derive(Debug, Clone, PartialEq, Deserialize)]
8#[serde(rename_all = "kebab-case")]
9pub struct User<'a> {
10 pub id: UserId<'a>,
11 pub names: Names,
12 pub pronouns: Option<String>,
13 pub weblink: String,
14 pub name_style: NameStyle,
15 pub role: UserRole,
16 pub signup: Option<String>,
17 pub location: Option<Location>,
18 pub twitch: Option<BasicLink>,
19 pub hitbox: Option<BasicLink>,
20 pub youtube: Option<BasicLink>,
21 pub twitter: Option<BasicLink>,
22 pub speedrunslive: Option<BasicLink>,
23 pub links: Vec<Link>,
24}
25
26#[derive(Debug, Clone, PartialEq, Deserialize)]
27#[serde(rename_all = "kebab-case")]
28#[serde(tag = "style")]
29pub enum NameStyle {
30 Solid {
31 color: Color,
32 },
33 #[serde(rename_all = "kebab-case")]
34 Gradient {
35 color_from: Color,
36 color_to: Color,
37 },
38}
39
40#[derive(Debug, Clone, PartialEq, Deserialize)]
41#[serde(rename_all = "kebab-case")]
42pub enum UserRole {
43 Banned,
44 User,
45 Trusted,
46 Moderator,
47 Admin,
48 Programmer,
49}
50
51#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
52#[serde(rename_all = "kebab-case")]
53pub struct Color {
54 pub light: String,
55 pub dark: String,
56}
57
58#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
59#[serde(rename_all = "kebab-case")]
60pub struct Location {
61 pub country: Place,
62 pub region: Option<Place>,
63}
64
65#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
66#[serde(rename_all = "kebab-case")]
67pub struct Place {
68 pub code: String,
69 pub names: Names,
70}
71
72#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
73#[serde(rename_all = "kebab-case")]
74pub struct BasicLink {
75 pub uri: String,
76}