cloudreve_api/api/
mod.rs

1//! API version management module
2
3use serde::{Deserialize, Serialize};
4
5pub mod v3;
6pub mod v4;
7
8/// Version information for Cloudreve API
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct VersionInfo {
11    /// API version (v3 or v4)
12    pub api_version: String,
13    /// Library version
14    pub library_version: String,
15    /// Server version (if available)
16    pub server_version: String,
17}
18
19/// Supported API version
20#[derive(Debug, Clone, Copy, PartialEq, Eq)]
21pub enum ApiVersion {
22    V3,
23    V4,
24}
25
26impl ApiVersion {
27    pub fn as_str(&self) -> &str {
28        match self {
29            ApiVersion::V3 => "v3",
30            ApiVersion::V4 => "v4",
31        }
32    }
33
34    pub fn from_str(s: &str) -> Option<Self> {
35        match s.to_lowercase().as_str() {
36            "v3" | "3" => Some(ApiVersion::V3),
37            "v4" | "4" => Some(ApiVersion::V4),
38            _ => None,
39        }
40    }
41}
42
43impl std::fmt::Display for ApiVersion {
44    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
45        write!(f, "{}", self.as_str())
46    }
47}