1use reqwest;
10
11use crate::apis::ResponseContent;
12use super::{Error, configuration};
13
14#[derive(Clone, Debug, Default)]
16pub struct CreateBackendParams {
17 pub service_id: String,
19 pub version_id: i32,
21 pub address: Option<String>,
23 pub auto_loadbalance: Option<bool>,
25 pub between_bytes_timeout: Option<i32>,
27 pub client_cert: Option<String>,
29 pub comment: Option<String>,
31 pub connect_timeout: Option<i32>,
33 pub first_byte_timeout: Option<i32>,
35 pub fetch_timeout: Option<i32>,
37 pub healthcheck: Option<String>,
39 pub hostname: Option<String>,
41 pub ipv4: Option<String>,
43 pub ipv6: Option<String>,
45 pub keepalive_time: Option<i32>,
47 pub max_conn: Option<i32>,
49 pub max_lifetime: Option<i32>,
51 pub max_tls_version: Option<String>,
53 pub min_tls_version: Option<String>,
55 pub max_use: Option<i32>,
57 pub name: Option<String>,
59 pub override_host: Option<String>,
61 pub port: Option<i32>,
63 pub prefer_ipv6: Option<bool>,
65 pub request_condition: Option<String>,
67 pub share_key: Option<String>,
69 pub shield: Option<String>,
71 pub ssl_ca_cert: Option<String>,
73 pub ssl_cert_hostname: Option<String>,
75 pub ssl_check_cert: Option<bool>,
77 pub ssl_ciphers: Option<String>,
79 pub ssl_client_cert: Option<String>,
81 pub ssl_client_key: Option<String>,
83 pub ssl_hostname: Option<String>,
85 pub ssl_sni_hostname: Option<String>,
87 pub tcp_keepalive_enable: Option<bool>,
89 pub tcp_keepalive_interval: Option<i32>,
91 pub tcp_keepalive_probes: Option<i32>,
93 pub tcp_keepalive_time: Option<i32>,
95 pub use_ssl: Option<bool>,
97 pub weight: Option<i32>
99}
100
101#[derive(Clone, Debug, Default)]
103pub struct DeleteBackendParams {
104 pub service_id: String,
106 pub version_id: i32,
108 pub backend_name: String
110}
111
112#[derive(Clone, Debug, Default)]
114pub struct GetBackendParams {
115 pub service_id: String,
117 pub version_id: i32,
119 pub backend_name: String
121}
122
123#[derive(Clone, Debug, Default)]
125pub struct ListBackendsParams {
126 pub service_id: String,
128 pub version_id: i32
130}
131
132#[derive(Clone, Debug, Default)]
134pub struct UpdateBackendParams {
135 pub service_id: String,
137 pub version_id: i32,
139 pub backend_name: String,
141 pub address: Option<String>,
143 pub auto_loadbalance: Option<bool>,
145 pub between_bytes_timeout: Option<i32>,
147 pub client_cert: Option<String>,
149 pub comment: Option<String>,
151 pub connect_timeout: Option<i32>,
153 pub first_byte_timeout: Option<i32>,
155 pub fetch_timeout: Option<i32>,
157 pub healthcheck: Option<String>,
159 pub hostname: Option<String>,
161 pub ipv4: Option<String>,
163 pub ipv6: Option<String>,
165 pub keepalive_time: Option<i32>,
167 pub max_conn: Option<i32>,
169 pub max_lifetime: Option<i32>,
171 pub max_tls_version: Option<String>,
173 pub min_tls_version: Option<String>,
175 pub max_use: Option<i32>,
177 pub name: Option<String>,
179 pub override_host: Option<String>,
181 pub port: Option<i32>,
183 pub prefer_ipv6: Option<bool>,
185 pub request_condition: Option<String>,
187 pub share_key: Option<String>,
189 pub shield: Option<String>,
191 pub ssl_ca_cert: Option<String>,
193 pub ssl_cert_hostname: Option<String>,
195 pub ssl_check_cert: Option<bool>,
197 pub ssl_ciphers: Option<String>,
199 pub ssl_client_cert: Option<String>,
201 pub ssl_client_key: Option<String>,
203 pub ssl_hostname: Option<String>,
205 pub ssl_sni_hostname: Option<String>,
207 pub tcp_keepalive_enable: Option<bool>,
209 pub tcp_keepalive_interval: Option<i32>,
211 pub tcp_keepalive_probes: Option<i32>,
213 pub tcp_keepalive_time: Option<i32>,
215 pub use_ssl: Option<bool>,
217 pub weight: Option<i32>
219}
220
221
222#[derive(Debug, Clone, Serialize, Deserialize)]
224#[serde(untagged)]
225pub enum CreateBackendError {
226 UnknownValue(serde_json::Value),
227}
228
229#[derive(Debug, Clone, Serialize, Deserialize)]
231#[serde(untagged)]
232pub enum DeleteBackendError {
233 UnknownValue(serde_json::Value),
234}
235
236#[derive(Debug, Clone, Serialize, Deserialize)]
238#[serde(untagged)]
239pub enum GetBackendError {
240 UnknownValue(serde_json::Value),
241}
242
243#[derive(Debug, Clone, Serialize, Deserialize)]
245#[serde(untagged)]
246pub enum ListBackendsError {
247 UnknownValue(serde_json::Value),
248}
249
250#[derive(Debug, Clone, Serialize, Deserialize)]
252#[serde(untagged)]
253pub enum UpdateBackendError {
254 UnknownValue(serde_json::Value),
255}
256
257
258pub async fn create_backend(configuration: &mut configuration::Configuration, params: CreateBackendParams) -> Result<crate::models::BackendResponse, Error<CreateBackendError>> {
260 let local_var_configuration = configuration;
261
262 let service_id = params.service_id;
264 let version_id = params.version_id;
265 let address = params.address;
266 let auto_loadbalance = params.auto_loadbalance;
267 let between_bytes_timeout = params.between_bytes_timeout;
268 let client_cert = params.client_cert;
269 let comment = params.comment;
270 let connect_timeout = params.connect_timeout;
271 let first_byte_timeout = params.first_byte_timeout;
272 let fetch_timeout = params.fetch_timeout;
273 let healthcheck = params.healthcheck;
274 let hostname = params.hostname;
275 let ipv4 = params.ipv4;
276 let ipv6 = params.ipv6;
277 let keepalive_time = params.keepalive_time;
278 let max_conn = params.max_conn;
279 let max_lifetime = params.max_lifetime;
280 let max_tls_version = params.max_tls_version;
281 let min_tls_version = params.min_tls_version;
282 let max_use = params.max_use;
283 let name = params.name;
284 let override_host = params.override_host;
285 let port = params.port;
286 let prefer_ipv6 = params.prefer_ipv6;
287 let request_condition = params.request_condition;
288 let share_key = params.share_key;
289 let shield = params.shield;
290 let ssl_ca_cert = params.ssl_ca_cert;
291 let ssl_cert_hostname = params.ssl_cert_hostname;
292 let ssl_check_cert = params.ssl_check_cert;
293 let ssl_ciphers = params.ssl_ciphers;
294 let ssl_client_cert = params.ssl_client_cert;
295 let ssl_client_key = params.ssl_client_key;
296 let ssl_hostname = params.ssl_hostname;
297 let ssl_sni_hostname = params.ssl_sni_hostname;
298 let tcp_keepalive_enable = params.tcp_keepalive_enable;
299 let tcp_keepalive_interval = params.tcp_keepalive_interval;
300 let tcp_keepalive_probes = params.tcp_keepalive_probes;
301 let tcp_keepalive_time = params.tcp_keepalive_time;
302 let use_ssl = params.use_ssl;
303 let weight = params.weight;
304
305
306 let local_var_client = &local_var_configuration.client;
307
308 let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/backend", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id);
309 let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
310
311 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
312 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
313 }
314 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
315 let local_var_key = local_var_apikey.key.clone();
316 let local_var_value = match local_var_apikey.prefix {
317 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
318 None => local_var_key,
319 };
320 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
321 };
322 let mut local_var_form_params = std::collections::HashMap::new();
323 if let Some(local_var_param_value) = address {
324 local_var_form_params.insert("address", local_var_param_value.to_string());
325 }
326 if let Some(local_var_param_value) = auto_loadbalance {
327 local_var_form_params.insert("auto_loadbalance", local_var_param_value.to_string());
328 }
329 if let Some(local_var_param_value) = between_bytes_timeout {
330 local_var_form_params.insert("between_bytes_timeout", local_var_param_value.to_string());
331 }
332 if let Some(local_var_param_value) = client_cert {
333 local_var_form_params.insert("client_cert", local_var_param_value.to_string());
334 }
335 if let Some(local_var_param_value) = comment {
336 local_var_form_params.insert("comment", local_var_param_value.to_string());
337 }
338 if let Some(local_var_param_value) = connect_timeout {
339 local_var_form_params.insert("connect_timeout", local_var_param_value.to_string());
340 }
341 if let Some(local_var_param_value) = first_byte_timeout {
342 local_var_form_params.insert("first_byte_timeout", local_var_param_value.to_string());
343 }
344 if let Some(local_var_param_value) = fetch_timeout {
345 local_var_form_params.insert("fetch_timeout", local_var_param_value.to_string());
346 }
347 if let Some(local_var_param_value) = healthcheck {
348 local_var_form_params.insert("healthcheck", local_var_param_value.to_string());
349 }
350 if let Some(local_var_param_value) = hostname {
351 local_var_form_params.insert("hostname", local_var_param_value.to_string());
352 }
353 if let Some(local_var_param_value) = ipv4 {
354 local_var_form_params.insert("ipv4", local_var_param_value.to_string());
355 }
356 if let Some(local_var_param_value) = ipv6 {
357 local_var_form_params.insert("ipv6", local_var_param_value.to_string());
358 }
359 if let Some(local_var_param_value) = keepalive_time {
360 local_var_form_params.insert("keepalive_time", local_var_param_value.to_string());
361 }
362 if let Some(local_var_param_value) = max_conn {
363 local_var_form_params.insert("max_conn", local_var_param_value.to_string());
364 }
365 if let Some(local_var_param_value) = max_lifetime {
366 local_var_form_params.insert("max_lifetime", local_var_param_value.to_string());
367 }
368 if let Some(local_var_param_value) = max_tls_version {
369 local_var_form_params.insert("max_tls_version", local_var_param_value.to_string());
370 }
371 if let Some(local_var_param_value) = min_tls_version {
372 local_var_form_params.insert("min_tls_version", local_var_param_value.to_string());
373 }
374 if let Some(local_var_param_value) = max_use {
375 local_var_form_params.insert("max_use", local_var_param_value.to_string());
376 }
377 if let Some(local_var_param_value) = name {
378 local_var_form_params.insert("name", local_var_param_value.to_string());
379 }
380 if let Some(local_var_param_value) = override_host {
381 local_var_form_params.insert("override_host", local_var_param_value.to_string());
382 }
383 if let Some(local_var_param_value) = port {
384 local_var_form_params.insert("port", local_var_param_value.to_string());
385 }
386 if let Some(local_var_param_value) = prefer_ipv6 {
387 local_var_form_params.insert("prefer_ipv6", local_var_param_value.to_string());
388 }
389 if let Some(local_var_param_value) = request_condition {
390 local_var_form_params.insert("request_condition", local_var_param_value.to_string());
391 }
392 if let Some(local_var_param_value) = share_key {
393 local_var_form_params.insert("share_key", local_var_param_value.to_string());
394 }
395 if let Some(local_var_param_value) = shield {
396 local_var_form_params.insert("shield", local_var_param_value.to_string());
397 }
398 if let Some(local_var_param_value) = ssl_ca_cert {
399 local_var_form_params.insert("ssl_ca_cert", local_var_param_value.to_string());
400 }
401 if let Some(local_var_param_value) = ssl_cert_hostname {
402 local_var_form_params.insert("ssl_cert_hostname", local_var_param_value.to_string());
403 }
404 if let Some(local_var_param_value) = ssl_check_cert {
405 local_var_form_params.insert("ssl_check_cert", local_var_param_value.to_string());
406 }
407 if let Some(local_var_param_value) = ssl_ciphers {
408 local_var_form_params.insert("ssl_ciphers", local_var_param_value.to_string());
409 }
410 if let Some(local_var_param_value) = ssl_client_cert {
411 local_var_form_params.insert("ssl_client_cert", local_var_param_value.to_string());
412 }
413 if let Some(local_var_param_value) = ssl_client_key {
414 local_var_form_params.insert("ssl_client_key", local_var_param_value.to_string());
415 }
416 if let Some(local_var_param_value) = ssl_hostname {
417 local_var_form_params.insert("ssl_hostname", local_var_param_value.to_string());
418 }
419 if let Some(local_var_param_value) = ssl_sni_hostname {
420 local_var_form_params.insert("ssl_sni_hostname", local_var_param_value.to_string());
421 }
422 if let Some(local_var_param_value) = tcp_keepalive_enable {
423 local_var_form_params.insert("tcp_keepalive_enable", local_var_param_value.to_string());
424 }
425 if let Some(local_var_param_value) = tcp_keepalive_interval {
426 local_var_form_params.insert("tcp_keepalive_interval", local_var_param_value.to_string());
427 }
428 if let Some(local_var_param_value) = tcp_keepalive_probes {
429 local_var_form_params.insert("tcp_keepalive_probes", local_var_param_value.to_string());
430 }
431 if let Some(local_var_param_value) = tcp_keepalive_time {
432 local_var_form_params.insert("tcp_keepalive_time", local_var_param_value.to_string());
433 }
434 if let Some(local_var_param_value) = use_ssl {
435 local_var_form_params.insert("use_ssl", local_var_param_value.to_string());
436 }
437 if let Some(local_var_param_value) = weight {
438 local_var_form_params.insert("weight", local_var_param_value.to_string());
439 }
440 local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
441
442 let local_var_req = local_var_req_builder.build()?;
443 let local_var_resp = local_var_client.execute(local_var_req).await?;
444
445 if "POST" != "GET" && "POST" != "HEAD" {
446 let headers = local_var_resp.headers();
447 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
448 Some(v) => v.to_str().unwrap().parse().unwrap(),
449 None => configuration::DEFAULT_RATELIMIT,
450 };
451 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
452 Some(v) => v.to_str().unwrap().parse().unwrap(),
453 None => 0,
454 };
455 }
456
457 let local_var_status = local_var_resp.status();
458 let local_var_content = local_var_resp.text().await?;
459
460 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
461 serde_json::from_str(&local_var_content).map_err(Error::from)
462 } else {
463 let local_var_entity: Option<CreateBackendError> = serde_json::from_str(&local_var_content).ok();
464 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
465 Err(Error::ResponseError(local_var_error))
466 }
467}
468
469pub async fn delete_backend(configuration: &mut configuration::Configuration, params: DeleteBackendParams) -> Result<crate::models::InlineResponse200, Error<DeleteBackendError>> {
471 let local_var_configuration = configuration;
472
473 let service_id = params.service_id;
475 let version_id = params.version_id;
476 let backend_name = params.backend_name;
477
478
479 let local_var_client = &local_var_configuration.client;
480
481 let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/backend/{backend_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, backend_name=crate::apis::urlencode(backend_name));
482 let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
483
484 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
485 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
486 }
487 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
488 let local_var_key = local_var_apikey.key.clone();
489 let local_var_value = match local_var_apikey.prefix {
490 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
491 None => local_var_key,
492 };
493 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
494 };
495
496 let local_var_req = local_var_req_builder.build()?;
497 let local_var_resp = local_var_client.execute(local_var_req).await?;
498
499 if "DELETE" != "GET" && "DELETE" != "HEAD" {
500 let headers = local_var_resp.headers();
501 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
502 Some(v) => v.to_str().unwrap().parse().unwrap(),
503 None => configuration::DEFAULT_RATELIMIT,
504 };
505 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
506 Some(v) => v.to_str().unwrap().parse().unwrap(),
507 None => 0,
508 };
509 }
510
511 let local_var_status = local_var_resp.status();
512 let local_var_content = local_var_resp.text().await?;
513
514 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
515 serde_json::from_str(&local_var_content).map_err(Error::from)
516 } else {
517 let local_var_entity: Option<DeleteBackendError> = serde_json::from_str(&local_var_content).ok();
518 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
519 Err(Error::ResponseError(local_var_error))
520 }
521}
522
523pub async fn get_backend(configuration: &mut configuration::Configuration, params: GetBackendParams) -> Result<crate::models::BackendResponse, Error<GetBackendError>> {
525 let local_var_configuration = configuration;
526
527 let service_id = params.service_id;
529 let version_id = params.version_id;
530 let backend_name = params.backend_name;
531
532
533 let local_var_client = &local_var_configuration.client;
534
535 let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/backend/{backend_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, backend_name=crate::apis::urlencode(backend_name));
536 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
537
538 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
539 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
540 }
541 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
542 let local_var_key = local_var_apikey.key.clone();
543 let local_var_value = match local_var_apikey.prefix {
544 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
545 None => local_var_key,
546 };
547 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
548 };
549
550 let local_var_req = local_var_req_builder.build()?;
551 let local_var_resp = local_var_client.execute(local_var_req).await?;
552
553 if "GET" != "GET" && "GET" != "HEAD" {
554 let headers = local_var_resp.headers();
555 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
556 Some(v) => v.to_str().unwrap().parse().unwrap(),
557 None => configuration::DEFAULT_RATELIMIT,
558 };
559 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
560 Some(v) => v.to_str().unwrap().parse().unwrap(),
561 None => 0,
562 };
563 }
564
565 let local_var_status = local_var_resp.status();
566 let local_var_content = local_var_resp.text().await?;
567
568 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
569 serde_json::from_str(&local_var_content).map_err(Error::from)
570 } else {
571 let local_var_entity: Option<GetBackendError> = serde_json::from_str(&local_var_content).ok();
572 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
573 Err(Error::ResponseError(local_var_error))
574 }
575}
576
577pub async fn list_backends(configuration: &mut configuration::Configuration, params: ListBackendsParams) -> Result<Vec<crate::models::BackendResponse>, Error<ListBackendsError>> {
579 let local_var_configuration = configuration;
580
581 let service_id = params.service_id;
583 let version_id = params.version_id;
584
585
586 let local_var_client = &local_var_configuration.client;
587
588 let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/backend", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id);
589 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
590
591 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
592 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
593 }
594 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
595 let local_var_key = local_var_apikey.key.clone();
596 let local_var_value = match local_var_apikey.prefix {
597 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
598 None => local_var_key,
599 };
600 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
601 };
602
603 let local_var_req = local_var_req_builder.build()?;
604 let local_var_resp = local_var_client.execute(local_var_req).await?;
605
606 if "GET" != "GET" && "GET" != "HEAD" {
607 let headers = local_var_resp.headers();
608 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
609 Some(v) => v.to_str().unwrap().parse().unwrap(),
610 None => configuration::DEFAULT_RATELIMIT,
611 };
612 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
613 Some(v) => v.to_str().unwrap().parse().unwrap(),
614 None => 0,
615 };
616 }
617
618 let local_var_status = local_var_resp.status();
619 let local_var_content = local_var_resp.text().await?;
620
621 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
622 serde_json::from_str(&local_var_content).map_err(Error::from)
623 } else {
624 let local_var_entity: Option<ListBackendsError> = serde_json::from_str(&local_var_content).ok();
625 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
626 Err(Error::ResponseError(local_var_error))
627 }
628}
629
630pub async fn update_backend(configuration: &mut configuration::Configuration, params: UpdateBackendParams) -> Result<crate::models::BackendResponse, Error<UpdateBackendError>> {
632 let local_var_configuration = configuration;
633
634 let service_id = params.service_id;
636 let version_id = params.version_id;
637 let backend_name = params.backend_name;
638 let address = params.address;
639 let auto_loadbalance = params.auto_loadbalance;
640 let between_bytes_timeout = params.between_bytes_timeout;
641 let client_cert = params.client_cert;
642 let comment = params.comment;
643 let connect_timeout = params.connect_timeout;
644 let first_byte_timeout = params.first_byte_timeout;
645 let fetch_timeout = params.fetch_timeout;
646 let healthcheck = params.healthcheck;
647 let hostname = params.hostname;
648 let ipv4 = params.ipv4;
649 let ipv6 = params.ipv6;
650 let keepalive_time = params.keepalive_time;
651 let max_conn = params.max_conn;
652 let max_lifetime = params.max_lifetime;
653 let max_tls_version = params.max_tls_version;
654 let min_tls_version = params.min_tls_version;
655 let max_use = params.max_use;
656 let name = params.name;
657 let override_host = params.override_host;
658 let port = params.port;
659 let prefer_ipv6 = params.prefer_ipv6;
660 let request_condition = params.request_condition;
661 let share_key = params.share_key;
662 let shield = params.shield;
663 let ssl_ca_cert = params.ssl_ca_cert;
664 let ssl_cert_hostname = params.ssl_cert_hostname;
665 let ssl_check_cert = params.ssl_check_cert;
666 let ssl_ciphers = params.ssl_ciphers;
667 let ssl_client_cert = params.ssl_client_cert;
668 let ssl_client_key = params.ssl_client_key;
669 let ssl_hostname = params.ssl_hostname;
670 let ssl_sni_hostname = params.ssl_sni_hostname;
671 let tcp_keepalive_enable = params.tcp_keepalive_enable;
672 let tcp_keepalive_interval = params.tcp_keepalive_interval;
673 let tcp_keepalive_probes = params.tcp_keepalive_probes;
674 let tcp_keepalive_time = params.tcp_keepalive_time;
675 let use_ssl = params.use_ssl;
676 let weight = params.weight;
677
678
679 let local_var_client = &local_var_configuration.client;
680
681 let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/backend/{backend_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, backend_name=crate::apis::urlencode(backend_name));
682 let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
683
684 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
685 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
686 }
687 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
688 let local_var_key = local_var_apikey.key.clone();
689 let local_var_value = match local_var_apikey.prefix {
690 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
691 None => local_var_key,
692 };
693 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
694 };
695 let mut local_var_form_params = std::collections::HashMap::new();
696 if let Some(local_var_param_value) = address {
697 local_var_form_params.insert("address", local_var_param_value.to_string());
698 }
699 if let Some(local_var_param_value) = auto_loadbalance {
700 local_var_form_params.insert("auto_loadbalance", local_var_param_value.to_string());
701 }
702 if let Some(local_var_param_value) = between_bytes_timeout {
703 local_var_form_params.insert("between_bytes_timeout", local_var_param_value.to_string());
704 }
705 if let Some(local_var_param_value) = client_cert {
706 local_var_form_params.insert("client_cert", local_var_param_value.to_string());
707 }
708 if let Some(local_var_param_value) = comment {
709 local_var_form_params.insert("comment", local_var_param_value.to_string());
710 }
711 if let Some(local_var_param_value) = connect_timeout {
712 local_var_form_params.insert("connect_timeout", local_var_param_value.to_string());
713 }
714 if let Some(local_var_param_value) = first_byte_timeout {
715 local_var_form_params.insert("first_byte_timeout", local_var_param_value.to_string());
716 }
717 if let Some(local_var_param_value) = fetch_timeout {
718 local_var_form_params.insert("fetch_timeout", local_var_param_value.to_string());
719 }
720 if let Some(local_var_param_value) = healthcheck {
721 local_var_form_params.insert("healthcheck", local_var_param_value.to_string());
722 }
723 if let Some(local_var_param_value) = hostname {
724 local_var_form_params.insert("hostname", local_var_param_value.to_string());
725 }
726 if let Some(local_var_param_value) = ipv4 {
727 local_var_form_params.insert("ipv4", local_var_param_value.to_string());
728 }
729 if let Some(local_var_param_value) = ipv6 {
730 local_var_form_params.insert("ipv6", local_var_param_value.to_string());
731 }
732 if let Some(local_var_param_value) = keepalive_time {
733 local_var_form_params.insert("keepalive_time", local_var_param_value.to_string());
734 }
735 if let Some(local_var_param_value) = max_conn {
736 local_var_form_params.insert("max_conn", local_var_param_value.to_string());
737 }
738 if let Some(local_var_param_value) = max_lifetime {
739 local_var_form_params.insert("max_lifetime", local_var_param_value.to_string());
740 }
741 if let Some(local_var_param_value) = max_tls_version {
742 local_var_form_params.insert("max_tls_version", local_var_param_value.to_string());
743 }
744 if let Some(local_var_param_value) = min_tls_version {
745 local_var_form_params.insert("min_tls_version", local_var_param_value.to_string());
746 }
747 if let Some(local_var_param_value) = max_use {
748 local_var_form_params.insert("max_use", local_var_param_value.to_string());
749 }
750 if let Some(local_var_param_value) = name {
751 local_var_form_params.insert("name", local_var_param_value.to_string());
752 }
753 if let Some(local_var_param_value) = override_host {
754 local_var_form_params.insert("override_host", local_var_param_value.to_string());
755 }
756 if let Some(local_var_param_value) = port {
757 local_var_form_params.insert("port", local_var_param_value.to_string());
758 }
759 if let Some(local_var_param_value) = prefer_ipv6 {
760 local_var_form_params.insert("prefer_ipv6", local_var_param_value.to_string());
761 }
762 if let Some(local_var_param_value) = request_condition {
763 local_var_form_params.insert("request_condition", local_var_param_value.to_string());
764 }
765 if let Some(local_var_param_value) = share_key {
766 local_var_form_params.insert("share_key", local_var_param_value.to_string());
767 }
768 if let Some(local_var_param_value) = shield {
769 local_var_form_params.insert("shield", local_var_param_value.to_string());
770 }
771 if let Some(local_var_param_value) = ssl_ca_cert {
772 local_var_form_params.insert("ssl_ca_cert", local_var_param_value.to_string());
773 }
774 if let Some(local_var_param_value) = ssl_cert_hostname {
775 local_var_form_params.insert("ssl_cert_hostname", local_var_param_value.to_string());
776 }
777 if let Some(local_var_param_value) = ssl_check_cert {
778 local_var_form_params.insert("ssl_check_cert", local_var_param_value.to_string());
779 }
780 if let Some(local_var_param_value) = ssl_ciphers {
781 local_var_form_params.insert("ssl_ciphers", local_var_param_value.to_string());
782 }
783 if let Some(local_var_param_value) = ssl_client_cert {
784 local_var_form_params.insert("ssl_client_cert", local_var_param_value.to_string());
785 }
786 if let Some(local_var_param_value) = ssl_client_key {
787 local_var_form_params.insert("ssl_client_key", local_var_param_value.to_string());
788 }
789 if let Some(local_var_param_value) = ssl_hostname {
790 local_var_form_params.insert("ssl_hostname", local_var_param_value.to_string());
791 }
792 if let Some(local_var_param_value) = ssl_sni_hostname {
793 local_var_form_params.insert("ssl_sni_hostname", local_var_param_value.to_string());
794 }
795 if let Some(local_var_param_value) = tcp_keepalive_enable {
796 local_var_form_params.insert("tcp_keepalive_enable", local_var_param_value.to_string());
797 }
798 if let Some(local_var_param_value) = tcp_keepalive_interval {
799 local_var_form_params.insert("tcp_keepalive_interval", local_var_param_value.to_string());
800 }
801 if let Some(local_var_param_value) = tcp_keepalive_probes {
802 local_var_form_params.insert("tcp_keepalive_probes", local_var_param_value.to_string());
803 }
804 if let Some(local_var_param_value) = tcp_keepalive_time {
805 local_var_form_params.insert("tcp_keepalive_time", local_var_param_value.to_string());
806 }
807 if let Some(local_var_param_value) = use_ssl {
808 local_var_form_params.insert("use_ssl", local_var_param_value.to_string());
809 }
810 if let Some(local_var_param_value) = weight {
811 local_var_form_params.insert("weight", local_var_param_value.to_string());
812 }
813 local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
814
815 let local_var_req = local_var_req_builder.build()?;
816 let local_var_resp = local_var_client.execute(local_var_req).await?;
817
818 if "PUT" != "GET" && "PUT" != "HEAD" {
819 let headers = local_var_resp.headers();
820 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
821 Some(v) => v.to_str().unwrap().parse().unwrap(),
822 None => configuration::DEFAULT_RATELIMIT,
823 };
824 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
825 Some(v) => v.to_str().unwrap().parse().unwrap(),
826 None => 0,
827 };
828 }
829
830 let local_var_status = local_var_resp.status();
831 let local_var_content = local_var_resp.text().await?;
832
833 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
834 serde_json::from_str(&local_var_content).map_err(Error::from)
835 } else {
836 let local_var_entity: Option<UpdateBackendError> = serde_json::from_str(&local_var_content).ok();
837 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
838 Err(Error::ResponseError(local_var_error))
839 }
840}
841