1mod query;
2pub mod request;
3
4pub use query::{FieldSet, JsonQuery, JsonQueryBuilder, JsonQueryFilter, UrlQueryParams};
5pub use request::API_BASE_URL;
6pub use request::get::Get;
7pub use request::post::Post;
8use serde::{Deserialize, Serialize};
9use strum::{Display, EnumString, VariantArray};
10use url::Url;
11
12#[non_exhaustive]
13#[remain::sorted]
14#[derive(Copy, Clone, Debug, Deserialize, Serialize, Display, EnumString, VariantArray)]
15#[cfg_attr(feature = "specta", derive(specta::Type))]
16pub enum Endpoint {
17 #[serde(rename = "authinfo")]
18 #[strum(serialize = "authinfo")]
19 AuthInfo,
20
21 #[serde(rename = "character")]
22 #[strum(serialize = "character")]
23 Character,
24
25 #[serde(rename = "producer")]
26 #[strum(serialize = "producer")]
27 Producer,
28
29 #[serde(rename = "release")]
30 #[strum(serialize = "release")]
31 Release,
32
33 #[serde(rename = "rlist")]
34 #[strum(serialize = "rlist")]
35 Rlist,
36
37 #[serde(rename = "schema")]
38 #[strum(serialize = "schema")]
39 Schema,
40
41 #[serde(rename = "staff")]
42 #[strum(serialize = "staff")]
43 Staff,
44
45 #[serde(rename = "stats")]
46 #[strum(serialize = "stats")]
47 Stats,
48
49 #[serde(rename = "tag")]
50 #[strum(serialize = "tag")]
51 Tag,
52
53 #[serde(rename = "trait")]
54 #[strum(serialize = "trait")]
55 Trait,
56
57 #[serde(rename = "ulist")]
58 #[strum(serialize = "ulist")]
59 Ulist,
60
61 #[serde(rename = "ulist_labels")]
62 #[strum(serialize = "ulist_labels")]
63 UlistLabels,
64
65 #[serde(rename = "user")]
66 #[strum(serialize = "user")]
67 User,
68
69 #[serde(rename = "vn")]
70 #[strum(serialize = "vn")]
71 VisualNovel,
72}
73
74impl Endpoint {
75 pub fn url(self) -> Url {
76 Url::parse(&format!("{API_BASE_URL}/{self}")).unwrap()
77 }
78}