uptrakit_openapi_client/
settings.rs1use crate::Result;
2use crate::UptrakitClient;
3use crate::types_impl::server_cert::RenewServerCertResponse;
4use crate::types_impl::settings_access::{AccessSettingsResponse, UpdateAccessSettingsRequest};
5use crate::types_impl::settings_agent_certs::{
6 AgentCertificateSettingsResponse, UpdateAgentCertificateSettingsRequest,
7};
8use crate::types_impl::settings_ca::RotateCaResponse;
9use crate::types_impl::settings_combined::{
10 CombinedSettingsResponse, GlobalSettingsCombinedResponse,
11};
12use crate::types_impl::settings_network::{NetworkSettingsResponse, UpdateNetworkSettingsRequest};
13use crate::types_impl::settings_reset::{ResetDataRequest, ResetDataResponse};
14
15impl UptrakitClient {
16 pub async fn get_global_combined_settings(&self) -> Result<GlobalSettingsCombinedResponse> {
18 self.get(crate::paths::global_settings::COMBINED).await
19 }
20
21 pub async fn get_combined_settings(&self) -> Result<CombinedSettingsResponse> {
23 self.get(crate::paths::settings::COMBINED).await
24 }
25
26 pub async fn get_access_settings(&self) -> Result<(AccessSettingsResponse, String)> {
29 self.get_with_etag(crate::paths::settings::ACCESS).await
30 }
31
32 pub async fn update_access_settings(
35 &self,
36 req: &UpdateAccessSettingsRequest,
37 etag: &str,
38 ) -> Result<(AccessSettingsResponse, String)> {
39 self.put_json_with_etag(crate::paths::settings::ACCESS, req, etag)
40 .await
41 }
42
43 pub async fn get_agent_certificate_settings(&self) -> Result<AgentCertificateSettingsResponse> {
45 self.get(crate::paths::settings::AGENT_CERTIFICATES).await
46 }
47
48 pub async fn update_agent_certificate_settings(
50 &self,
51 req: &UpdateAgentCertificateSettingsRequest,
52 ) -> Result<AgentCertificateSettingsResponse> {
53 self.put_json(crate::paths::settings::AGENT_CERTIFICATES, req)
54 .await
55 }
56
57 pub async fn get_network_settings(&self) -> Result<NetworkSettingsResponse> {
59 self.get(crate::paths::settings::NETWORK).await
60 }
61
62 pub async fn update_network_settings(
64 &self,
65 req: &UpdateNetworkSettingsRequest,
66 ) -> Result<NetworkSettingsResponse> {
67 self.put_json(crate::paths::settings::NETWORK, req).await
68 }
69
70 pub async fn rotate_ca(&self) -> Result<RotateCaResponse> {
72 self.post_empty(crate::paths::settings::ROTATE_CA).await
73 }
74
75 pub async fn renew_server_certificate(&self) -> Result<RenewServerCertResponse> {
77 self.post_empty(crate::paths::settings::RENEW_SERVER_CERT)
78 .await
79 }
80
81 pub async fn reset_data(&self, req: &ResetDataRequest) -> Result<ResetDataResponse> {
83 self.post_json(crate::paths::settings::RESET_DATA, req)
84 .await
85 }
86}
87
88#[cfg(test)]
89mod tests {
90 use crate::types_impl::SecretString;
91 use crate::types_impl::registration::RegistrationMode;
92 use crate::types_impl::settings_access::UpdateAccessSettingsRequest;
93 use crate::types_impl::settings_agent_certs::UpdateAgentCertificateSettingsRequest;
94 use crate::types_impl::settings_network::UpdateNetworkSettingsRequest;
95
96 #[test]
97 fn update_access_settings_serialization() {
98 let req = UpdateAccessSettingsRequest {
99 mode: RegistrationMode::Invite,
100 token: Some(SecretString::new("my-invite-token")),
101 require_token_for_oidc: Some(true),
102 password_auth_enabled: Some(false),
103 two_factor_required: None,
104 };
105 let json = serde_json::to_value(&req).expect("serialize");
106 assert_eq!(json["mode"], "invite");
107 assert_eq!(json["token"], "my-invite-token");
108 assert_eq!(json["require_token_for_oidc"], true);
109 assert_eq!(json["password_auth_enabled"], false);
110 }
111
112 #[test]
113 fn update_agent_certificate_settings_serialization() {
114 let req = UpdateAgentCertificateSettingsRequest {
115 lifetime_hours: Some(8_760),
116 renewal_window_hours: Some(72),
117 };
118 let json = serde_json::to_value(&req).expect("serialize");
119 assert_eq!(json["lifetime_hours"], 8_760);
120 assert_eq!(json["renewal_window_hours"], 72);
121 }
122
123 #[test]
124 fn update_network_settings_serialization() {
125 let req = UpdateNetworkSettingsRequest {
126 trusted_proxies: Some(vec!["10.0.0.0/8".to_string()]),
127 real_ip_header: Some("X-Real-IP".to_string()),
128 sans: None,
129 https_addr: None,
130 forwarded_client_cert_info_header: None,
131 forwarded_client_cert_pem_header: None,
132 pki_addr: None,
133 regenerate_cert: None,
134 };
135 let json = serde_json::to_value(&req).expect("serialize");
136 assert_eq!(json["trusted_proxies"][0], "10.0.0.0/8");
137 assert_eq!(json["real_ip_header"], "X-Real-IP");
138 }
139}