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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
use serde::Deserialize;
/// Revolt instance configuration
#[derive(Deserialize, Debug, Clone)]
pub struct InstanceConfiguration {
    /// Revolt API version
    pub revolt: String,
    /// Features enabled on this Revolt node
    pub features: InstanceFeatures,
    /// WebSocket URL
    pub ws: String,
    /// URL pointing to the client serving this node
    pub app: String,
    /// Web Push VAPID public key
    pub vapid: String,
    /// Build information
    pub build: BuildInformation,
}
/// Features enabled on this Revolt node
#[derive(Deserialize, Debug, Clone)]
pub struct InstanceFeatures {
    /// hCaptcha configuration
    pub captcha: CaptchaConfiguration,
    /// Whether email verification is enabled
    pub email: bool,
    /// Whether this instance is invite only
    pub invite_only: bool,
    /// File server service configuration
    pub autumn: AutumnConfiguration,
    /// Proxy server configuration
    pub january: JanuaryConfiguration,
    /// Voice server configuration
    pub voso: VosoConfiguration,
}
/// hCaptcha configuration
#[derive(Deserialize, Debug, Clone)]
pub struct CaptchaConfiguration {
    /// Whether captcha is enabled
    pub enabled: bool,
    /// Client key used for solving captcha
    pub key: String,
}
/// File server service configuration
#[derive(Deserialize, Debug, Clone)]
pub struct AutumnConfiguration {
    /// Whether the service is enabled
    pub enabled: bool,
    /// URL pointing to this service
    pub url: String,
}
/// Proxy server configuration
#[derive(Deserialize, Debug, Clone)]
pub struct JanuaryConfiguration {
    /// Whether the service is enabled
    pub enabled: bool,
    /// URL pointing to this service
    pub url: String,
}
/// Voice server configuration
#[derive(Deserialize, Debug, Clone)]
pub struct VosoConfiguration {
    /// Whether the service is enabled
    pub enabled: bool,
    /// URL pointing to the voice API
    pub url: String,
    /// URL pointing to the voice WebSocket server
    pub ws: String,
}
/// Build information
#[derive(Deserialize, Debug, Clone)]
pub struct BuildInformation {
    /// Commit hash
    pub commit_sha: String,
    /// Commit timestamp
    pub commit_timestamp: String,
    /// Git semver
    pub semver: String,
    /// Git origin URL
    pub origin_url: String,
    /// Build timestamp
    pub timestamp: String,
}