fastly_api/apis/
pool_api.rs

1/*
2 * Fastly API
3 *
4 * Via the Fastly API you can perform any of the operations that are possible within the management console,  including creating services, domains, and backends, configuring rules or uploading your own application code, as well as account operations such as user administration and billing reports. The API is organized into collections of endpoints that allow manipulation of objects related to Fastly services and accounts. For the most accurate and up-to-date API reference content, visit our [Developer Hub](https://www.fastly.com/documentation/reference/api/) 
5 *
6 */
7
8
9use reqwest;
10
11use crate::apis::ResponseContent;
12use super::{Error, configuration};
13
14/// struct for passing parameters to the method [`create_server_pool`]
15#[derive(Clone, Debug, Default)]
16pub struct CreateServerPoolParams {
17    /// Alphanumeric string identifying the service.
18    pub service_id: String,
19    /// Integer identifying a service version.
20    pub version_id: i32,
21    /// A secure certificate to authenticate a server with. Must be in PEM format.
22    pub tls_ca_cert: Option<String>,
23    /// The client certificate used to make authenticated requests. Must be in PEM format.
24    pub tls_client_cert: Option<String>,
25    /// The client private key used to make authenticated requests. Must be in PEM format.
26    pub tls_client_key: Option<String>,
27    /// The hostname used to verify a server's certificate. It can either be the Common Name (CN) or a Subject Alternative Name (SAN).
28    pub tls_cert_hostname: Option<String>,
29    /// Whether to use TLS.
30    pub use_tls: Option<i32>,
31    /// Date and time in ISO 8601 format.
32    pub created_at: Option<String>,
33    /// Date and time in ISO 8601 format.
34    pub deleted_at: Option<String>,
35    /// Date and time in ISO 8601 format.
36    pub updated_at: Option<String>,
37    pub service_id2: Option<String>,
38    pub version: Option<String>,
39    /// Name for the Pool.
40    pub name: Option<String>,
41    /// Selected POP to serve as a shield for the servers. Defaults to `null` meaning no origin shielding if not set. Refer to the [POPs API endpoint](https://www.fastly.com/documentation/reference/api/utils/pops/) to get a list of available POPs used for shielding.
42    pub shield: Option<String>,
43    /// Condition which, if met, will select this configuration during a request. Optional.
44    pub request_condition: Option<String>,
45    /// List of OpenSSL ciphers (see the [openssl.org manpages](https://www.openssl.org/docs/man1.1.1/man1/ciphers.html) for details). Optional.
46    pub tls_ciphers: Option<String>,
47    /// SNI hostname. Optional.
48    pub tls_sni_hostname: Option<String>,
49    /// Minimum allowed TLS version on connections to this server. Optional.
50    pub min_tls_version: Option<i32>,
51    /// Maximum allowed TLS version on connections to this server. Optional.
52    pub max_tls_version: Option<i32>,
53    /// Name of the healthcheck to use with this pool. Can be empty and could be reused across multiple backend and pools.
54    pub healthcheck: Option<String>,
55    /// A freeform descriptive note.
56    pub comment: Option<String>,
57    /// What type of load balance group to use.
58    pub _type: Option<String>,
59    /// The hostname to [override the Host header](https://docs.fastly.com/en/guides/specifying-an-override-host). Defaults to `null` meaning no override of the Host header will occur. This setting can also be added to a Server definition. If the field is set on a Server definition it will override the Pool setting.
60    pub override_host: Option<String>,
61    /// Maximum duration in milliseconds that Fastly will wait while receiving no data on a download from a backend. If exceeded, the response received so far will be considered complete and the fetch will end. May be set at runtime using `bereq.between_bytes_timeout`.
62    pub between_bytes_timeout: Option<i32>,
63    /// How long to wait for a timeout in milliseconds. Optional.
64    pub connect_timeout: Option<i32>,
65    /// How long to wait for the first byte in milliseconds. Optional.
66    pub first_byte_timeout: Option<i32>,
67    /// Maximum number of connections. Optional.
68    pub max_conn_default: Option<i32>,
69    /// Percentage of capacity (`0-100`) that needs to be operationally available for a pool to be considered up.
70    pub quorum: Option<i32>,
71    /// Be strict on checking TLS certs. Optional.
72    pub tls_check_cert: Option<i32>
73}
74
75/// struct for passing parameters to the method [`delete_server_pool`]
76#[derive(Clone, Debug, Default)]
77pub struct DeleteServerPoolParams {
78    /// Alphanumeric string identifying the service.
79    pub service_id: String,
80    /// Integer identifying a service version.
81    pub version_id: i32,
82    /// Name for the Pool.
83    pub pool_name: String
84}
85
86/// struct for passing parameters to the method [`get_server_pool`]
87#[derive(Clone, Debug, Default)]
88pub struct GetServerPoolParams {
89    /// Alphanumeric string identifying the service.
90    pub service_id: String,
91    /// Integer identifying a service version.
92    pub version_id: i32,
93    /// Name for the Pool.
94    pub pool_name: String
95}
96
97/// struct for passing parameters to the method [`list_server_pools`]
98#[derive(Clone, Debug, Default)]
99pub struct ListServerPoolsParams {
100    /// Alphanumeric string identifying the service.
101    pub service_id: String,
102    /// Integer identifying a service version.
103    pub version_id: i32
104}
105
106/// struct for passing parameters to the method [`update_server_pool`]
107#[derive(Clone, Debug, Default)]
108pub struct UpdateServerPoolParams {
109    /// Alphanumeric string identifying the service.
110    pub service_id: String,
111    /// Integer identifying a service version.
112    pub version_id: i32,
113    /// Name for the Pool.
114    pub pool_name: String,
115    /// A secure certificate to authenticate a server with. Must be in PEM format.
116    pub tls_ca_cert: Option<String>,
117    /// The client certificate used to make authenticated requests. Must be in PEM format.
118    pub tls_client_cert: Option<String>,
119    /// The client private key used to make authenticated requests. Must be in PEM format.
120    pub tls_client_key: Option<String>,
121    /// The hostname used to verify a server's certificate. It can either be the Common Name (CN) or a Subject Alternative Name (SAN).
122    pub tls_cert_hostname: Option<String>,
123    /// Whether to use TLS.
124    pub use_tls: Option<i32>,
125    /// Date and time in ISO 8601 format.
126    pub created_at: Option<String>,
127    /// Date and time in ISO 8601 format.
128    pub deleted_at: Option<String>,
129    /// Date and time in ISO 8601 format.
130    pub updated_at: Option<String>,
131    pub service_id2: Option<String>,
132    pub version: Option<String>,
133    /// Name for the Pool.
134    pub name: Option<String>,
135    /// Selected POP to serve as a shield for the servers. Defaults to `null` meaning no origin shielding if not set. Refer to the [POPs API endpoint](https://www.fastly.com/documentation/reference/api/utils/pops/) to get a list of available POPs used for shielding.
136    pub shield: Option<String>,
137    /// Condition which, if met, will select this configuration during a request. Optional.
138    pub request_condition: Option<String>,
139    /// List of OpenSSL ciphers (see the [openssl.org manpages](https://www.openssl.org/docs/man1.1.1/man1/ciphers.html) for details). Optional.
140    pub tls_ciphers: Option<String>,
141    /// SNI hostname. Optional.
142    pub tls_sni_hostname: Option<String>,
143    /// Minimum allowed TLS version on connections to this server. Optional.
144    pub min_tls_version: Option<i32>,
145    /// Maximum allowed TLS version on connections to this server. Optional.
146    pub max_tls_version: Option<i32>,
147    /// Name of the healthcheck to use with this pool. Can be empty and could be reused across multiple backend and pools.
148    pub healthcheck: Option<String>,
149    /// A freeform descriptive note.
150    pub comment: Option<String>,
151    /// What type of load balance group to use.
152    pub _type: Option<String>,
153    /// The hostname to [override the Host header](https://docs.fastly.com/en/guides/specifying-an-override-host). Defaults to `null` meaning no override of the Host header will occur. This setting can also be added to a Server definition. If the field is set on a Server definition it will override the Pool setting.
154    pub override_host: Option<String>,
155    /// Maximum duration in milliseconds that Fastly will wait while receiving no data on a download from a backend. If exceeded, the response received so far will be considered complete and the fetch will end. May be set at runtime using `bereq.between_bytes_timeout`.
156    pub between_bytes_timeout: Option<i32>,
157    /// How long to wait for a timeout in milliseconds. Optional.
158    pub connect_timeout: Option<i32>,
159    /// How long to wait for the first byte in milliseconds. Optional.
160    pub first_byte_timeout: Option<i32>,
161    /// Maximum number of connections. Optional.
162    pub max_conn_default: Option<i32>,
163    /// Percentage of capacity (`0-100`) that needs to be operationally available for a pool to be considered up.
164    pub quorum: Option<i32>,
165    /// Be strict on checking TLS certs. Optional.
166    pub tls_check_cert: Option<i32>
167}
168
169
170/// struct for typed errors of method [`create_server_pool`]
171#[derive(Debug, Clone, Serialize, Deserialize)]
172#[serde(untagged)]
173pub enum CreateServerPoolError {
174    UnknownValue(serde_json::Value),
175}
176
177/// struct for typed errors of method [`delete_server_pool`]
178#[derive(Debug, Clone, Serialize, Deserialize)]
179#[serde(untagged)]
180pub enum DeleteServerPoolError {
181    UnknownValue(serde_json::Value),
182}
183
184/// struct for typed errors of method [`get_server_pool`]
185#[derive(Debug, Clone, Serialize, Deserialize)]
186#[serde(untagged)]
187pub enum GetServerPoolError {
188    UnknownValue(serde_json::Value),
189}
190
191/// struct for typed errors of method [`list_server_pools`]
192#[derive(Debug, Clone, Serialize, Deserialize)]
193#[serde(untagged)]
194pub enum ListServerPoolsError {
195    UnknownValue(serde_json::Value),
196}
197
198/// struct for typed errors of method [`update_server_pool`]
199#[derive(Debug, Clone, Serialize, Deserialize)]
200#[serde(untagged)]
201pub enum UpdateServerPoolError {
202    UnknownValue(serde_json::Value),
203}
204
205
206/// Creates a pool for a particular service and version.
207pub async fn create_server_pool(configuration: &mut configuration::Configuration, params: CreateServerPoolParams) -> Result<crate::models::PoolResponsePost, Error<CreateServerPoolError>> {
208    let local_var_configuration = configuration;
209
210    // unbox the parameters
211    let service_id = params.service_id;
212    let version_id = params.version_id;
213    let tls_ca_cert = params.tls_ca_cert;
214    let tls_client_cert = params.tls_client_cert;
215    let tls_client_key = params.tls_client_key;
216    let tls_cert_hostname = params.tls_cert_hostname;
217    let use_tls = params.use_tls;
218    let created_at = params.created_at;
219    let deleted_at = params.deleted_at;
220    let updated_at = params.updated_at;
221    let service_id2 = params.service_id2;
222    let version = params.version;
223    let name = params.name;
224    let shield = params.shield;
225    let request_condition = params.request_condition;
226    let tls_ciphers = params.tls_ciphers;
227    let tls_sni_hostname = params.tls_sni_hostname;
228    let min_tls_version = params.min_tls_version;
229    let max_tls_version = params.max_tls_version;
230    let healthcheck = params.healthcheck;
231    let comment = params.comment;
232    let _type = params._type;
233    let override_host = params.override_host;
234    let between_bytes_timeout = params.between_bytes_timeout;
235    let connect_timeout = params.connect_timeout;
236    let first_byte_timeout = params.first_byte_timeout;
237    let max_conn_default = params.max_conn_default;
238    let quorum = params.quorum;
239    let tls_check_cert = params.tls_check_cert;
240
241
242    let local_var_client = &local_var_configuration.client;
243
244    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/pool", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id);
245    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
246
247    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
248        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
249    }
250    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
251        let local_var_key = local_var_apikey.key.clone();
252        let local_var_value = match local_var_apikey.prefix {
253            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
254            None => local_var_key,
255        };
256        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
257    };
258    let mut local_var_form_params = std::collections::HashMap::new();
259    if let Some(local_var_param_value) = tls_ca_cert {
260        local_var_form_params.insert("tls_ca_cert", local_var_param_value.to_string());
261    }
262    if let Some(local_var_param_value) = tls_client_cert {
263        local_var_form_params.insert("tls_client_cert", local_var_param_value.to_string());
264    }
265    if let Some(local_var_param_value) = tls_client_key {
266        local_var_form_params.insert("tls_client_key", local_var_param_value.to_string());
267    }
268    if let Some(local_var_param_value) = tls_cert_hostname {
269        local_var_form_params.insert("tls_cert_hostname", local_var_param_value.to_string());
270    }
271    if let Some(local_var_param_value) = use_tls {
272        local_var_form_params.insert("use_tls", local_var_param_value.to_string());
273    }
274    if let Some(local_var_param_value) = created_at {
275        local_var_form_params.insert("created_at", local_var_param_value.to_string());
276    }
277    if let Some(local_var_param_value) = deleted_at {
278        local_var_form_params.insert("deleted_at", local_var_param_value.to_string());
279    }
280    if let Some(local_var_param_value) = updated_at {
281        local_var_form_params.insert("updated_at", local_var_param_value.to_string());
282    }
283    if let Some(local_var_param_value) = service_id2 {
284        local_var_form_params.insert("service_id", local_var_param_value.to_string());
285    }
286    if let Some(local_var_param_value) = version {
287        local_var_form_params.insert("version", local_var_param_value.to_string());
288    }
289    if let Some(local_var_param_value) = name {
290        local_var_form_params.insert("name", local_var_param_value.to_string());
291    }
292    if let Some(local_var_param_value) = shield {
293        local_var_form_params.insert("shield", local_var_param_value.to_string());
294    }
295    if let Some(local_var_param_value) = request_condition {
296        local_var_form_params.insert("request_condition", local_var_param_value.to_string());
297    }
298    if let Some(local_var_param_value) = tls_ciphers {
299        local_var_form_params.insert("tls_ciphers", local_var_param_value.to_string());
300    }
301    if let Some(local_var_param_value) = tls_sni_hostname {
302        local_var_form_params.insert("tls_sni_hostname", local_var_param_value.to_string());
303    }
304    if let Some(local_var_param_value) = min_tls_version {
305        local_var_form_params.insert("min_tls_version", local_var_param_value.to_string());
306    }
307    if let Some(local_var_param_value) = max_tls_version {
308        local_var_form_params.insert("max_tls_version", local_var_param_value.to_string());
309    }
310    if let Some(local_var_param_value) = healthcheck {
311        local_var_form_params.insert("healthcheck", local_var_param_value.to_string());
312    }
313    if let Some(local_var_param_value) = comment {
314        local_var_form_params.insert("comment", local_var_param_value.to_string());
315    }
316    if let Some(local_var_param_value) = _type {
317        local_var_form_params.insert("type", local_var_param_value.to_string());
318    }
319    if let Some(local_var_param_value) = override_host {
320        local_var_form_params.insert("override_host", local_var_param_value.to_string());
321    }
322    if let Some(local_var_param_value) = between_bytes_timeout {
323        local_var_form_params.insert("between_bytes_timeout", local_var_param_value.to_string());
324    }
325    if let Some(local_var_param_value) = connect_timeout {
326        local_var_form_params.insert("connect_timeout", local_var_param_value.to_string());
327    }
328    if let Some(local_var_param_value) = first_byte_timeout {
329        local_var_form_params.insert("first_byte_timeout", local_var_param_value.to_string());
330    }
331    if let Some(local_var_param_value) = max_conn_default {
332        local_var_form_params.insert("max_conn_default", local_var_param_value.to_string());
333    }
334    if let Some(local_var_param_value) = quorum {
335        local_var_form_params.insert("quorum", local_var_param_value.to_string());
336    }
337    if let Some(local_var_param_value) = tls_check_cert {
338        local_var_form_params.insert("tls_check_cert", local_var_param_value.to_string());
339    }
340    local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
341
342    let local_var_req = local_var_req_builder.build()?;
343    let local_var_resp = local_var_client.execute(local_var_req).await?;
344
345    if "POST" != "GET" && "POST" != "HEAD" {
346      let headers = local_var_resp.headers();
347      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
348          Some(v) => v.to_str().unwrap().parse().unwrap(),
349          None => configuration::DEFAULT_RATELIMIT,
350      };
351      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
352          Some(v) => v.to_str().unwrap().parse().unwrap(),
353          None => 0,
354      };
355    }
356
357    let local_var_status = local_var_resp.status();
358    let local_var_content = local_var_resp.text().await?;
359
360    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
361        serde_json::from_str(&local_var_content).map_err(Error::from)
362    } else {
363        let local_var_entity: Option<CreateServerPoolError> = serde_json::from_str(&local_var_content).ok();
364        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
365        Err(Error::ResponseError(local_var_error))
366    }
367}
368
369/// Deletes a specific pool for a particular service and version.
370pub async fn delete_server_pool(configuration: &mut configuration::Configuration, params: DeleteServerPoolParams) -> Result<crate::models::InlineResponse200, Error<DeleteServerPoolError>> {
371    let local_var_configuration = configuration;
372
373    // unbox the parameters
374    let service_id = params.service_id;
375    let version_id = params.version_id;
376    let pool_name = params.pool_name;
377
378
379    let local_var_client = &local_var_configuration.client;
380
381    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/pool/{pool_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, pool_name=crate::apis::urlencode(pool_name));
382    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
383
384    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
385        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
386    }
387    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
388        let local_var_key = local_var_apikey.key.clone();
389        let local_var_value = match local_var_apikey.prefix {
390            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
391            None => local_var_key,
392        };
393        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
394    };
395
396    let local_var_req = local_var_req_builder.build()?;
397    let local_var_resp = local_var_client.execute(local_var_req).await?;
398
399    if "DELETE" != "GET" && "DELETE" != "HEAD" {
400      let headers = local_var_resp.headers();
401      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
402          Some(v) => v.to_str().unwrap().parse().unwrap(),
403          None => configuration::DEFAULT_RATELIMIT,
404      };
405      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
406          Some(v) => v.to_str().unwrap().parse().unwrap(),
407          None => 0,
408      };
409    }
410
411    let local_var_status = local_var_resp.status();
412    let local_var_content = local_var_resp.text().await?;
413
414    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
415        serde_json::from_str(&local_var_content).map_err(Error::from)
416    } else {
417        let local_var_entity: Option<DeleteServerPoolError> = serde_json::from_str(&local_var_content).ok();
418        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
419        Err(Error::ResponseError(local_var_error))
420    }
421}
422
423/// Gets a single pool for a particular service and version.
424pub async fn get_server_pool(configuration: &mut configuration::Configuration, params: GetServerPoolParams) -> Result<crate::models::PoolResponse, Error<GetServerPoolError>> {
425    let local_var_configuration = configuration;
426
427    // unbox the parameters
428    let service_id = params.service_id;
429    let version_id = params.version_id;
430    let pool_name = params.pool_name;
431
432
433    let local_var_client = &local_var_configuration.client;
434
435    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/pool/{pool_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, pool_name=crate::apis::urlencode(pool_name));
436    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
437
438    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
439        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
440    }
441    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
442        let local_var_key = local_var_apikey.key.clone();
443        let local_var_value = match local_var_apikey.prefix {
444            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
445            None => local_var_key,
446        };
447        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
448    };
449
450    let local_var_req = local_var_req_builder.build()?;
451    let local_var_resp = local_var_client.execute(local_var_req).await?;
452
453    if "GET" != "GET" && "GET" != "HEAD" {
454      let headers = local_var_resp.headers();
455      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
456          Some(v) => v.to_str().unwrap().parse().unwrap(),
457          None => configuration::DEFAULT_RATELIMIT,
458      };
459      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
460          Some(v) => v.to_str().unwrap().parse().unwrap(),
461          None => 0,
462      };
463    }
464
465    let local_var_status = local_var_resp.status();
466    let local_var_content = local_var_resp.text().await?;
467
468    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
469        serde_json::from_str(&local_var_content).map_err(Error::from)
470    } else {
471        let local_var_entity: Option<GetServerPoolError> = serde_json::from_str(&local_var_content).ok();
472        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
473        Err(Error::ResponseError(local_var_error))
474    }
475}
476
477/// Lists all pools for a particular service and pool.
478pub async fn list_server_pools(configuration: &mut configuration::Configuration, params: ListServerPoolsParams) -> Result<Vec<crate::models::PoolResponse>, Error<ListServerPoolsError>> {
479    let local_var_configuration = configuration;
480
481    // unbox the parameters
482    let service_id = params.service_id;
483    let version_id = params.version_id;
484
485
486    let local_var_client = &local_var_configuration.client;
487
488    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/pool", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id);
489    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
490
491    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
492        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
493    }
494    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
495        let local_var_key = local_var_apikey.key.clone();
496        let local_var_value = match local_var_apikey.prefix {
497            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
498            None => local_var_key,
499        };
500        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
501    };
502
503    let local_var_req = local_var_req_builder.build()?;
504    let local_var_resp = local_var_client.execute(local_var_req).await?;
505
506    if "GET" != "GET" && "GET" != "HEAD" {
507      let headers = local_var_resp.headers();
508      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
509          Some(v) => v.to_str().unwrap().parse().unwrap(),
510          None => configuration::DEFAULT_RATELIMIT,
511      };
512      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
513          Some(v) => v.to_str().unwrap().parse().unwrap(),
514          None => 0,
515      };
516    }
517
518    let local_var_status = local_var_resp.status();
519    let local_var_content = local_var_resp.text().await?;
520
521    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
522        serde_json::from_str(&local_var_content).map_err(Error::from)
523    } else {
524        let local_var_entity: Option<ListServerPoolsError> = serde_json::from_str(&local_var_content).ok();
525        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
526        Err(Error::ResponseError(local_var_error))
527    }
528}
529
530/// Updates a specific pool for a particular service and version.
531pub async fn update_server_pool(configuration: &mut configuration::Configuration, params: UpdateServerPoolParams) -> Result<crate::models::PoolResponse, Error<UpdateServerPoolError>> {
532    let local_var_configuration = configuration;
533
534    // unbox the parameters
535    let service_id = params.service_id;
536    let version_id = params.version_id;
537    let pool_name = params.pool_name;
538    let tls_ca_cert = params.tls_ca_cert;
539    let tls_client_cert = params.tls_client_cert;
540    let tls_client_key = params.tls_client_key;
541    let tls_cert_hostname = params.tls_cert_hostname;
542    let use_tls = params.use_tls;
543    let created_at = params.created_at;
544    let deleted_at = params.deleted_at;
545    let updated_at = params.updated_at;
546    let service_id2 = params.service_id2;
547    let version = params.version;
548    let name = params.name;
549    let shield = params.shield;
550    let request_condition = params.request_condition;
551    let tls_ciphers = params.tls_ciphers;
552    let tls_sni_hostname = params.tls_sni_hostname;
553    let min_tls_version = params.min_tls_version;
554    let max_tls_version = params.max_tls_version;
555    let healthcheck = params.healthcheck;
556    let comment = params.comment;
557    let _type = params._type;
558    let override_host = params.override_host;
559    let between_bytes_timeout = params.between_bytes_timeout;
560    let connect_timeout = params.connect_timeout;
561    let first_byte_timeout = params.first_byte_timeout;
562    let max_conn_default = params.max_conn_default;
563    let quorum = params.quorum;
564    let tls_check_cert = params.tls_check_cert;
565
566
567    let local_var_client = &local_var_configuration.client;
568
569    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/pool/{pool_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, pool_name=crate::apis::urlencode(pool_name));
570    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
571
572    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
573        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
574    }
575    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
576        let local_var_key = local_var_apikey.key.clone();
577        let local_var_value = match local_var_apikey.prefix {
578            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
579            None => local_var_key,
580        };
581        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
582    };
583    let mut local_var_form_params = std::collections::HashMap::new();
584    if let Some(local_var_param_value) = tls_ca_cert {
585        local_var_form_params.insert("tls_ca_cert", local_var_param_value.to_string());
586    }
587    if let Some(local_var_param_value) = tls_client_cert {
588        local_var_form_params.insert("tls_client_cert", local_var_param_value.to_string());
589    }
590    if let Some(local_var_param_value) = tls_client_key {
591        local_var_form_params.insert("tls_client_key", local_var_param_value.to_string());
592    }
593    if let Some(local_var_param_value) = tls_cert_hostname {
594        local_var_form_params.insert("tls_cert_hostname", local_var_param_value.to_string());
595    }
596    if let Some(local_var_param_value) = use_tls {
597        local_var_form_params.insert("use_tls", local_var_param_value.to_string());
598    }
599    if let Some(local_var_param_value) = created_at {
600        local_var_form_params.insert("created_at", local_var_param_value.to_string());
601    }
602    if let Some(local_var_param_value) = deleted_at {
603        local_var_form_params.insert("deleted_at", local_var_param_value.to_string());
604    }
605    if let Some(local_var_param_value) = updated_at {
606        local_var_form_params.insert("updated_at", local_var_param_value.to_string());
607    }
608    if let Some(local_var_param_value) = service_id2 {
609        local_var_form_params.insert("service_id", local_var_param_value.to_string());
610    }
611    if let Some(local_var_param_value) = version {
612        local_var_form_params.insert("version", local_var_param_value.to_string());
613    }
614    if let Some(local_var_param_value) = name {
615        local_var_form_params.insert("name", local_var_param_value.to_string());
616    }
617    if let Some(local_var_param_value) = shield {
618        local_var_form_params.insert("shield", local_var_param_value.to_string());
619    }
620    if let Some(local_var_param_value) = request_condition {
621        local_var_form_params.insert("request_condition", local_var_param_value.to_string());
622    }
623    if let Some(local_var_param_value) = tls_ciphers {
624        local_var_form_params.insert("tls_ciphers", local_var_param_value.to_string());
625    }
626    if let Some(local_var_param_value) = tls_sni_hostname {
627        local_var_form_params.insert("tls_sni_hostname", local_var_param_value.to_string());
628    }
629    if let Some(local_var_param_value) = min_tls_version {
630        local_var_form_params.insert("min_tls_version", local_var_param_value.to_string());
631    }
632    if let Some(local_var_param_value) = max_tls_version {
633        local_var_form_params.insert("max_tls_version", local_var_param_value.to_string());
634    }
635    if let Some(local_var_param_value) = healthcheck {
636        local_var_form_params.insert("healthcheck", local_var_param_value.to_string());
637    }
638    if let Some(local_var_param_value) = comment {
639        local_var_form_params.insert("comment", local_var_param_value.to_string());
640    }
641    if let Some(local_var_param_value) = _type {
642        local_var_form_params.insert("type", local_var_param_value.to_string());
643    }
644    if let Some(local_var_param_value) = override_host {
645        local_var_form_params.insert("override_host", local_var_param_value.to_string());
646    }
647    if let Some(local_var_param_value) = between_bytes_timeout {
648        local_var_form_params.insert("between_bytes_timeout", local_var_param_value.to_string());
649    }
650    if let Some(local_var_param_value) = connect_timeout {
651        local_var_form_params.insert("connect_timeout", local_var_param_value.to_string());
652    }
653    if let Some(local_var_param_value) = first_byte_timeout {
654        local_var_form_params.insert("first_byte_timeout", local_var_param_value.to_string());
655    }
656    if let Some(local_var_param_value) = max_conn_default {
657        local_var_form_params.insert("max_conn_default", local_var_param_value.to_string());
658    }
659    if let Some(local_var_param_value) = quorum {
660        local_var_form_params.insert("quorum", local_var_param_value.to_string());
661    }
662    if let Some(local_var_param_value) = tls_check_cert {
663        local_var_form_params.insert("tls_check_cert", local_var_param_value.to_string());
664    }
665    local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
666
667    let local_var_req = local_var_req_builder.build()?;
668    let local_var_resp = local_var_client.execute(local_var_req).await?;
669
670    if "PUT" != "GET" && "PUT" != "HEAD" {
671      let headers = local_var_resp.headers();
672      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
673          Some(v) => v.to_str().unwrap().parse().unwrap(),
674          None => configuration::DEFAULT_RATELIMIT,
675      };
676      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
677          Some(v) => v.to_str().unwrap().parse().unwrap(),
678          None => 0,
679      };
680    }
681
682    let local_var_status = local_var_resp.status();
683    let local_var_content = local_var_resp.text().await?;
684
685    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
686        serde_json::from_str(&local_var_content).map_err(Error::from)
687    } else {
688        let local_var_entity: Option<UpdateServerPoolError> = serde_json::from_str(&local_var_content).ok();
689        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
690        Err(Error::ResponseError(local_var_error))
691    }
692}
693