cloudreve_api/api/v4/models/
site.rs

1//! Site configuration models for Cloudreve API v4
2
3use serde::{Deserialize, Serialize};
4
5/// Site configuration
6#[derive(Debug, Deserialize)]
7pub struct SiteConfig {
8    pub instance_id: Option<String>,
9    pub title: Option<String>,
10    pub login_captcha: Option<bool>,
11    pub reg_captcha: Option<bool>,
12    pub forget_captcha: Option<bool>,
13    pub abuse_report_captcha: Option<bool>,
14    pub themes: Option<String>,
15    pub default_theme: Option<String>,
16    pub authn: Option<bool>,
17    pub user: Option<super::auth::NewUser>,
18    pub captcha_re_captcha_key: Option<String>,
19    pub captcha_cap_instance_url: String,
20    pub captcha_cap_site_key: String,
21    pub site_notice: Option<String>,
22    pub captcha_type: Option<String>,
23    pub turnstile_site_id: Option<String>,
24    pub register_enabled: Option<bool>,
25    pub qq_enabled: Option<bool>,
26    pub sso_enabled: Option<bool>,
27    pub sso_display_name: Option<String>,
28    pub sso_icon: Option<String>,
29    pub oidc_enabled: Option<bool>,
30    pub oidc_display_name: Option<String>,
31    pub oidc_icon: Option<String>,
32    pub logo: Option<String>,
33    pub logo_light: Option<String>,
34    pub tos_url: Option<String>,
35    pub privacy_policy_url: Option<String>,
36    pub icons: Option<String>,
37    pub emoji_preset: Option<String>,
38    pub point_enabled: Option<bool>,
39    pub share_point_gain_rate: Option<f64>,
40    pub map_provider: Option<String>,
41    pub google_map_tile_type: Option<String>,
42    pub file_viewers: Option<Vec<FileViewer>>,
43    pub max_batch_size: Option<f64>,
44    pub app_promotion: Option<bool>,
45    pub app_feedback: Option<String>,
46    pub app_forum: Option<String>,
47    pub payment: Option<PaymentSetting>,
48    pub anonymous_purchase: Option<bool>,
49    pub point_price: Option<f64>,
50    pub shop_nav_enabled: Option<bool>,
51    pub storage_products: Option<Vec<StorageProduct>>,
52    pub group_skus: Option<Vec<GroupSKU>>,
53    pub thumbnail_width: Option<f64>,
54    pub thumbnail_height: Option<f64>,
55    pub custom_props: Option<Vec<CustomProps>>,
56    pub custom_nav_items: Option<Vec<CustomNavItem>>,
57    pub custom_html: Option<CustomHTML>,
58    pub mapbox_ak: Option<String>,
59    pub thumb_exts: Option<Vec<String>>,
60}
61
62/// File viewer configuration
63#[derive(Debug, Serialize, Deserialize)]
64pub struct FileViewer {
65    pub extensions: Vec<String>,
66    pub handler: String,
67    pub name: String,
68    pub priority: i32,
69}
70
71/// Payment setting
72#[derive(Debug, Serialize, Deserialize)]
73pub struct PaymentSetting {
74    pub providers: Vec<PaymentProvider>,
75}
76
77/// Payment provider
78#[derive(Debug, Serialize, Deserialize)]
79pub struct PaymentProvider {
80    pub id: String,
81    pub name: String,
82    pub enabled: bool,
83}
84
85/// Storage product
86#[derive(Debug, Serialize, Deserialize)]
87pub struct StorageProduct {
88    pub id: String,
89    pub name: String,
90    pub price: f64,
91    pub storage: i64,
92}
93
94/// Group SKU
95#[derive(Debug, Serialize, Deserialize)]
96pub struct GroupSKU {
97    pub id: String,
98    pub name: String,
99    pub price: f64,
100    pub group_id: String,
101}
102
103/// Custom property
104#[derive(Debug, Serialize, Deserialize)]
105pub struct CustomProps {
106    pub key: String,
107    pub name: String,
108    pub r#type: String,
109    pub options: Option<Vec<String>>,
110}
111
112/// Custom navigation item
113#[derive(Debug, Serialize, Deserialize)]
114pub struct CustomNavItem {
115    pub icon: String,
116    pub name: String,
117    pub url: String,
118}
119
120/// Custom HTML
121#[derive(Debug, Serialize, Deserialize)]
122pub struct CustomHTML {
123    pub head: Option<String>,
124    pub body: Option<String>,
125}