Skip to main content

nextcloud_users/capabilities/
version.rs

1use serde::{Deserialize, Serialize};
2
3/// Nextcloud server version information reported in capabilities.
4#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
5pub struct ServerVersion {
6    /// Major release version.
7    pub major: u32,
8    /// Minor release version, if present.
9    #[serde(default)]
10    pub minor: Option<u32>,
11    /// Micro / patch release version, if present.
12    #[serde(default)]
13    pub micro: Option<u32>,
14    /// Full version string (e.g. `"30.0.4"`).
15    pub string: String,
16    /// Nextcloud edition (e.g. `"Community"` or `"Enterprise"`), if reported.
17    #[serde(default)]
18    pub edition: Option<String>,
19    /// Whether this server has extended support enabled.
20    #[serde(default, alias = "extendedSupport", alias = "extended_support")]
21    pub extended_support: Option<bool>,
22}
23
24impl ServerVersion {
25    /// Major release version number.
26    pub const fn major(&self) -> u32 {
27        self.major
28    }
29
30    /// Minor release version number.
31    pub const fn minor(&self) -> Option<u32> {
32        self.minor
33    }
34
35    /// Micro / patch release version number.
36    pub const fn micro(&self) -> Option<u32> {
37        self.micro
38    }
39
40    /// Full version string.
41    pub fn string(&self) -> &str {
42        &self.string
43    }
44
45    /// Server edition name.
46    pub fn edition(&self) -> Option<&str> {
47        self.edition.as_deref()
48    }
49
50    /// Whether extended support is active.
51    pub const fn extended_support(&self) -> Option<bool> {
52        self.extended_support
53    }
54}