fastly_api/apis/
settings_api.rs1use reqwest;
10
11use crate::apis::ResponseContent;
12use super::{Error, configuration};
13
14#[derive(Clone, Debug, Default)]
16pub struct GetServiceSettingsParams {
17 pub service_id: String,
19 pub version_id: i32
21}
22
23#[derive(Clone, Debug, Default)]
25pub struct UpdateServiceSettingsParams {
26 pub service_id: String,
28 pub version_id: i32,
30 pub general_default_host: Option<String>,
32 pub general_default_ttl: Option<i32>,
34 pub general_stale_if_error: Option<bool>,
36 pub general_stale_if_error_ttl: Option<i32>
38}
39
40
41#[derive(Debug, Clone, Serialize, Deserialize)]
43#[serde(untagged)]
44pub enum GetServiceSettingsError {
45 UnknownValue(serde_json::Value),
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
50#[serde(untagged)]
51pub enum UpdateServiceSettingsError {
52 UnknownValue(serde_json::Value),
53}
54
55
56pub async fn get_service_settings(configuration: &mut configuration::Configuration, params: GetServiceSettingsParams) -> Result<crate::models::SettingsResponse, Error<GetServiceSettingsError>> {
58 let local_var_configuration = configuration;
59
60 let service_id = params.service_id;
62 let version_id = params.version_id;
63
64
65 let local_var_client = &local_var_configuration.client;
66
67 let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/settings", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id);
68 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
69
70 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
71 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
72 }
73 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
74 let local_var_key = local_var_apikey.key.clone();
75 let local_var_value = match local_var_apikey.prefix {
76 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
77 None => local_var_key,
78 };
79 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
80 };
81
82 let local_var_req = local_var_req_builder.build()?;
83 let local_var_resp = local_var_client.execute(local_var_req).await?;
84
85 if "GET" != "GET" && "GET" != "HEAD" {
86 let headers = local_var_resp.headers();
87 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
88 Some(v) => v.to_str().unwrap().parse().unwrap(),
89 None => configuration::DEFAULT_RATELIMIT,
90 };
91 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
92 Some(v) => v.to_str().unwrap().parse().unwrap(),
93 None => 0,
94 };
95 }
96
97 let local_var_status = local_var_resp.status();
98 let local_var_content = local_var_resp.text().await?;
99
100 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
101 serde_json::from_str(&local_var_content).map_err(Error::from)
102 } else {
103 let local_var_entity: Option<GetServiceSettingsError> = serde_json::from_str(&local_var_content).ok();
104 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
105 Err(Error::ResponseError(local_var_error))
106 }
107}
108
109pub async fn update_service_settings(configuration: &mut configuration::Configuration, params: UpdateServiceSettingsParams) -> Result<crate::models::SettingsResponse, Error<UpdateServiceSettingsError>> {
111 let local_var_configuration = configuration;
112
113 let service_id = params.service_id;
115 let version_id = params.version_id;
116 let general_default_host = params.general_default_host;
117 let general_default_ttl = params.general_default_ttl;
118 let general_stale_if_error = params.general_stale_if_error;
119 let general_stale_if_error_ttl = params.general_stale_if_error_ttl;
120
121
122 let local_var_client = &local_var_configuration.client;
123
124 let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/settings", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id);
125 let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
126
127 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
128 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
129 }
130 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
131 let local_var_key = local_var_apikey.key.clone();
132 let local_var_value = match local_var_apikey.prefix {
133 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
134 None => local_var_key,
135 };
136 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
137 };
138 let mut local_var_form_params = std::collections::HashMap::new();
139 if let Some(local_var_param_value) = general_default_host {
140 local_var_form_params.insert("general.default_host", local_var_param_value.to_string());
141 }
142 if let Some(local_var_param_value) = general_default_ttl {
143 local_var_form_params.insert("general.default_ttl", local_var_param_value.to_string());
144 }
145 if let Some(local_var_param_value) = general_stale_if_error {
146 local_var_form_params.insert("general.stale_if_error", local_var_param_value.to_string());
147 }
148 if let Some(local_var_param_value) = general_stale_if_error_ttl {
149 local_var_form_params.insert("general.stale_if_error_ttl", local_var_param_value.to_string());
150 }
151 local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
152
153 let local_var_req = local_var_req_builder.build()?;
154 let local_var_resp = local_var_client.execute(local_var_req).await?;
155
156 if "PUT" != "GET" && "PUT" != "HEAD" {
157 let headers = local_var_resp.headers();
158 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
159 Some(v) => v.to_str().unwrap().parse().unwrap(),
160 None => configuration::DEFAULT_RATELIMIT,
161 };
162 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
163 Some(v) => v.to_str().unwrap().parse().unwrap(),
164 None => 0,
165 };
166 }
167
168 let local_var_status = local_var_resp.status();
169 let local_var_content = local_var_resp.text().await?;
170
171 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
172 serde_json::from_str(&local_var_content).map_err(Error::from)
173 } else {
174 let local_var_entity: Option<UpdateServiceSettingsError> = serde_json::from_str(&local_var_content).ok();
175 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
176 Err(Error::ResponseError(local_var_error))
177 }
178}
179