osu_api/api_v1/models/
mod.rs1mod beatmaps;
2mod de;
3mod recent;
4
5pub use beatmaps::{GetBeatmapsProps, GetBeatmapsResp};
6pub use recent::{GetUserRecentProp, GetUserRecentResp};
7
8use serde::{Deserialize, Serialize};
9
10#[derive(Debug, Serialize, Deserialize)]
11pub enum GameMode {
12 Standard,
13 Taiko,
14 CatchTheBeat,
15 Mania,
16}
17
18impl ToString for GameMode {
19 fn to_string(&self) -> String {
20 self.as_ref().to_string()
21 }
22}
23
24impl AsRef<str> for GameMode {
25 fn as_ref(&self) -> &str {
26 use GameMode::*;
27
28 match self {
29 Standard => "0",
30 Taiko => "1",
31 CatchTheBeat => "2",
32 Mania => "3",
33 }
34 }
35}
36
37#[derive(Debug)]
38pub enum UserId<'u> {
39 Id(u64),
40 Username(&'u str),
41}
42
43impl From<u64> for UserId<'_> {
44 fn from(id: u64) -> Self {
45 Self::Id(id)
46 }
47}
48
49impl<'a> From<&'a str> for UserId<'a> {
50 fn from(name: &'a str) -> Self {
51 Self::Username(name)
52 }
53}
54
55bitflags::bitflags! {
56 pub struct ModsFlag: u64 {
57 const NONE = 0;
58 const NOFAIL = 1;
59 const EASY = 2;
60 const TOUCHDEVICE = 4;
61 const HIDDEN = 8;
62 const HARDROCK = 16;
63 const SUDDENDEATH = 32;
64 const DOUBLETIME = 64;
65 const RELAX = 128;
66 const HALFTIME = 256;
67 const NIGHTCORE = 512 | Self::DOUBLETIME.bits;
68 const FLASHLIGHT = 1024;
69 const AUTOPLAY = 2048;
70 const SPUNOUT = 4096;
71 const RELAX2 = 8192; const PERFECT = 16384 | Self::SUDDENDEATH.bits;
73 const KEY4 = 32768;
74 const KEY5 = 65536;
75 const KEY6 = 131072;
76 const KEY7 = 262144;
77 const KEY8 = 524288;
78 const FADEIN = 1048576;
79 const RANDOM = 2097152;
80 const CINEMA = 4194304;
81 const TARGET = 8388608;
82 const KEY9 = 16777216;
83 const KEYCOOP = 33554432;
84 const KEY1 = 67108864;
85 const KEY3 = 134217728;
86 const KEY2 = 268435456;
87 const SCOREV2 = 536870912;
88 const MIRROR = 1073741824;
89 const KEYMOD = Self::KEY1.bits
90 | Self::KEY2.bits
91 | Self::KEY3.bits
92 | Self::KEY4.bits
93 | Self::KEY5.bits
94 | Self::KEY6.bits
95 | Self::KEY7.bits
96 | Self::KEY8.bits
97 | Self::KEY9.bits
98 | Self::KEYCOOP.bits;
99 const FREEMODALLOWED = Self::NOFAIL.bits
100 | Self::EASY.bits
101 | Self::HIDDEN.bits
102 | Self::HARDROCK.bits
103 | Self::SUDDENDEATH.bits
104 | Self::FLASHLIGHT.bits
105 | Self::FADEIN.bits
106 | Self::RELAX.bits
107 | Self::RELAX2.bits
108 | Self::SPUNOUT.bits
109 | Self::KEYMOD.bits;
110 const SCOREINCREASEMODS = Self::HIDDEN.bits
111 | Self::HARDROCK.bits
112 | Self::DOUBLETIME.bits
113 | Self::FLASHLIGHT.bits
114 | Self::FADEIN.bits;
115 }
116}