fastly_api/apis/
logging_s3_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_log_aws_s3`]
15#[derive(Clone, Debug, Default)]
16pub struct CreateLogAwsS3Params {
17    /// Alphanumeric string identifying the service.
18    pub service_id: String,
19    /// Integer identifying a service version.
20    pub version_id: i32,
21    /// The name for the real-time logging configuration.
22    pub name: Option<String>,
23    /// Where in the generated VCL the logging call should be placed. If not set, endpoints with `format_version` of 2 are placed in `vcl_log` and those with `format_version` of 1 are placed in `vcl_deliver`. 
24    pub placement: Option<String>,
25    /// The name of an existing condition in the configured endpoint, or leave blank to always execute.
26    pub response_condition: Option<String>,
27    /// A Fastly [log format string](https://www.fastly.com/documentation/guides/integrations/streaming-logs/custom-log-formats/).
28    pub format: Option<String>,
29    /// The geographic region where the logs will be processed before streaming. Valid values are `us`, `eu`, and `none` for global.
30    pub log_processing_region: Option<String>,
31    /// The version of the custom logging format used for the configured endpoint. The logging call gets placed by default in `vcl_log` if `format_version` is set to `2` and in `vcl_deliver` if `format_version` is set to `1`. 
32    pub format_version: Option<i32>,
33    /// How the message should be formatted.
34    pub message_type: Option<String>,
35    /// A timestamp format
36    pub timestamp_format: Option<String>,
37    /// The codec used for compressing your logs. Valid values are `zstd`, `snappy`, and `gzip`. Specifying both `compression_codec` and `gzip_level` in the same API request will result in an error.
38    pub compression_codec: Option<String>,
39    /// How frequently log files are finalized so they can be available for reading (in seconds).
40    pub period: Option<i32>,
41    /// The level of gzip encoding when sending logs (default `0`, no compression). Specifying both `compression_codec` and `gzip_level` in the same API request will result in an error.
42    pub gzip_level: Option<i32>,
43    /// The access key for your S3 account. Not required if `iam_role` is provided.
44    pub access_key: Option<String>,
45    /// The access control list (ACL) specific request header. See the AWS documentation for [Access Control List (ACL) Specific Request Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html#initiate-mpu-acl-specific-request-headers) for more information.
46    pub acl: Option<String>,
47    /// The bucket name for S3 account.
48    pub bucket_name: Option<String>,
49    /// The domain of the Amazon S3 endpoint.
50    pub domain: Option<String>,
51    /// The Amazon Resource Name (ARN) for the IAM role granting Fastly access to S3. Not required if `access_key` and `secret_key` are provided.
52    pub iam_role: Option<String>,
53    /// The path to upload logs to.
54    pub path: Option<String>,
55    /// A PGP public key that Fastly will use to encrypt your log files before writing them to disk.
56    pub public_key: Option<String>,
57    /// The S3 redundancy level.
58    pub redundancy: Option<String>,
59    /// The secret key for your S3 account. Not required if `iam_role` is provided.
60    pub secret_key: Option<String>,
61    /// Optional server-side KMS Key Id. Must be set if `server_side_encryption` is set to `aws:kms` or `AES256`.
62    pub server_side_encryption_kms_key_id: Option<String>,
63    /// Set this to `AES256` or `aws:kms` to enable S3 Server Side Encryption.
64    pub server_side_encryption: Option<String>,
65    /// The maximum number of bytes for each uploaded file. A value of 0 can be used to indicate there is no limit on the size of uploaded files, otherwise the minimum value is 1048576 bytes (1 MiB.)
66    pub file_max_bytes: Option<i32>
67}
68
69/// struct for passing parameters to the method [`delete_log_aws_s3`]
70#[derive(Clone, Debug, Default)]
71pub struct DeleteLogAwsS3Params {
72    /// Alphanumeric string identifying the service.
73    pub service_id: String,
74    /// Integer identifying a service version.
75    pub version_id: i32,
76    /// The name for the real-time logging configuration.
77    pub logging_s3_name: String
78}
79
80/// struct for passing parameters to the method [`get_log_aws_s3`]
81#[derive(Clone, Debug, Default)]
82pub struct GetLogAwsS3Params {
83    /// Alphanumeric string identifying the service.
84    pub service_id: String,
85    /// Integer identifying a service version.
86    pub version_id: i32,
87    /// The name for the real-time logging configuration.
88    pub logging_s3_name: String
89}
90
91/// struct for passing parameters to the method [`list_log_aws_s3`]
92#[derive(Clone, Debug, Default)]
93pub struct ListLogAwsS3Params {
94    /// Alphanumeric string identifying the service.
95    pub service_id: String,
96    /// Integer identifying a service version.
97    pub version_id: i32
98}
99
100/// struct for passing parameters to the method [`update_log_aws_s3`]
101#[derive(Clone, Debug, Default)]
102pub struct UpdateLogAwsS3Params {
103    /// Alphanumeric string identifying the service.
104    pub service_id: String,
105    /// Integer identifying a service version.
106    pub version_id: i32,
107    /// The name for the real-time logging configuration.
108    pub logging_s3_name: String,
109    /// The name for the real-time logging configuration.
110    pub name: Option<String>,
111    /// Where in the generated VCL the logging call should be placed. If not set, endpoints with `format_version` of 2 are placed in `vcl_log` and those with `format_version` of 1 are placed in `vcl_deliver`. 
112    pub placement: Option<String>,
113    /// The name of an existing condition in the configured endpoint, or leave blank to always execute.
114    pub response_condition: Option<String>,
115    /// A Fastly [log format string](https://www.fastly.com/documentation/guides/integrations/streaming-logs/custom-log-formats/).
116    pub format: Option<String>,
117    /// The geographic region where the logs will be processed before streaming. Valid values are `us`, `eu`, and `none` for global.
118    pub log_processing_region: Option<String>,
119    /// The version of the custom logging format used for the configured endpoint. The logging call gets placed by default in `vcl_log` if `format_version` is set to `2` and in `vcl_deliver` if `format_version` is set to `1`. 
120    pub format_version: Option<i32>,
121    /// How the message should be formatted.
122    pub message_type: Option<String>,
123    /// A timestamp format
124    pub timestamp_format: Option<String>,
125    /// The codec used for compressing your logs. Valid values are `zstd`, `snappy`, and `gzip`. Specifying both `compression_codec` and `gzip_level` in the same API request will result in an error.
126    pub compression_codec: Option<String>,
127    /// How frequently log files are finalized so they can be available for reading (in seconds).
128    pub period: Option<i32>,
129    /// The level of gzip encoding when sending logs (default `0`, no compression). Specifying both `compression_codec` and `gzip_level` in the same API request will result in an error.
130    pub gzip_level: Option<i32>,
131    /// The access key for your S3 account. Not required if `iam_role` is provided.
132    pub access_key: Option<String>,
133    /// The access control list (ACL) specific request header. See the AWS documentation for [Access Control List (ACL) Specific Request Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html#initiate-mpu-acl-specific-request-headers) for more information.
134    pub acl: Option<String>,
135    /// The bucket name for S3 account.
136    pub bucket_name: Option<String>,
137    /// The domain of the Amazon S3 endpoint.
138    pub domain: Option<String>,
139    /// The Amazon Resource Name (ARN) for the IAM role granting Fastly access to S3. Not required if `access_key` and `secret_key` are provided.
140    pub iam_role: Option<String>,
141    /// The path to upload logs to.
142    pub path: Option<String>,
143    /// A PGP public key that Fastly will use to encrypt your log files before writing them to disk.
144    pub public_key: Option<String>,
145    /// The S3 redundancy level.
146    pub redundancy: Option<String>,
147    /// The secret key for your S3 account. Not required if `iam_role` is provided.
148    pub secret_key: Option<String>,
149    /// Optional server-side KMS Key Id. Must be set if `server_side_encryption` is set to `aws:kms` or `AES256`.
150    pub server_side_encryption_kms_key_id: Option<String>,
151    /// Set this to `AES256` or `aws:kms` to enable S3 Server Side Encryption.
152    pub server_side_encryption: Option<String>,
153    /// The maximum number of bytes for each uploaded file. A value of 0 can be used to indicate there is no limit on the size of uploaded files, otherwise the minimum value is 1048576 bytes (1 MiB.)
154    pub file_max_bytes: Option<i32>
155}
156
157
158/// struct for typed errors of method [`create_log_aws_s3`]
159#[derive(Debug, Clone, Serialize, Deserialize)]
160#[serde(untagged)]
161pub enum CreateLogAwsS3Error {
162    UnknownValue(serde_json::Value),
163}
164
165/// struct for typed errors of method [`delete_log_aws_s3`]
166#[derive(Debug, Clone, Serialize, Deserialize)]
167#[serde(untagged)]
168pub enum DeleteLogAwsS3Error {
169    UnknownValue(serde_json::Value),
170}
171
172/// struct for typed errors of method [`get_log_aws_s3`]
173#[derive(Debug, Clone, Serialize, Deserialize)]
174#[serde(untagged)]
175pub enum GetLogAwsS3Error {
176    UnknownValue(serde_json::Value),
177}
178
179/// struct for typed errors of method [`list_log_aws_s3`]
180#[derive(Debug, Clone, Serialize, Deserialize)]
181#[serde(untagged)]
182pub enum ListLogAwsS3Error {
183    UnknownValue(serde_json::Value),
184}
185
186/// struct for typed errors of method [`update_log_aws_s3`]
187#[derive(Debug, Clone, Serialize, Deserialize)]
188#[serde(untagged)]
189pub enum UpdateLogAwsS3Error {
190    UnknownValue(serde_json::Value),
191}
192
193
194/// Create a S3 for a particular service and version.
195pub async fn create_log_aws_s3(configuration: &mut configuration::Configuration, params: CreateLogAwsS3Params) -> Result<crate::models::LoggingS3Response, Error<CreateLogAwsS3Error>> {
196    let local_var_configuration = configuration;
197
198    // unbox the parameters
199    let service_id = params.service_id;
200    let version_id = params.version_id;
201    let name = params.name;
202    let placement = params.placement;
203    let response_condition = params.response_condition;
204    let format = params.format;
205    let log_processing_region = params.log_processing_region;
206    let format_version = params.format_version;
207    let message_type = params.message_type;
208    let timestamp_format = params.timestamp_format;
209    let compression_codec = params.compression_codec;
210    let period = params.period;
211    let gzip_level = params.gzip_level;
212    let access_key = params.access_key;
213    let acl = params.acl;
214    let bucket_name = params.bucket_name;
215    let domain = params.domain;
216    let iam_role = params.iam_role;
217    let path = params.path;
218    let public_key = params.public_key;
219    let redundancy = params.redundancy;
220    let secret_key = params.secret_key;
221    let server_side_encryption_kms_key_id = params.server_side_encryption_kms_key_id;
222    let server_side_encryption = params.server_side_encryption;
223    let file_max_bytes = params.file_max_bytes;
224
225
226    let local_var_client = &local_var_configuration.client;
227
228    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/logging/s3", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id);
229    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
230
231    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
232        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
233    }
234    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
235        let local_var_key = local_var_apikey.key.clone();
236        let local_var_value = match local_var_apikey.prefix {
237            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
238            None => local_var_key,
239        };
240        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
241    };
242    let mut local_var_form_params = std::collections::HashMap::new();
243    if let Some(local_var_param_value) = name {
244        local_var_form_params.insert("name", local_var_param_value.to_string());
245    }
246    if let Some(local_var_param_value) = placement {
247        local_var_form_params.insert("placement", local_var_param_value.to_string());
248    }
249    if let Some(local_var_param_value) = response_condition {
250        local_var_form_params.insert("response_condition", local_var_param_value.to_string());
251    }
252    if let Some(local_var_param_value) = format {
253        local_var_form_params.insert("format", local_var_param_value.to_string());
254    }
255    if let Some(local_var_param_value) = log_processing_region {
256        local_var_form_params.insert("log_processing_region", local_var_param_value.to_string());
257    }
258    if let Some(local_var_param_value) = format_version {
259        local_var_form_params.insert("format_version", local_var_param_value.to_string());
260    }
261    if let Some(local_var_param_value) = message_type {
262        local_var_form_params.insert("message_type", local_var_param_value.to_string());
263    }
264    if let Some(local_var_param_value) = timestamp_format {
265        local_var_form_params.insert("timestamp_format", local_var_param_value.to_string());
266    }
267    if let Some(local_var_param_value) = compression_codec {
268        local_var_form_params.insert("compression_codec", local_var_param_value.to_string());
269    }
270    if let Some(local_var_param_value) = period {
271        local_var_form_params.insert("period", local_var_param_value.to_string());
272    }
273    if let Some(local_var_param_value) = gzip_level {
274        local_var_form_params.insert("gzip_level", local_var_param_value.to_string());
275    }
276    if let Some(local_var_param_value) = access_key {
277        local_var_form_params.insert("access_key", local_var_param_value.to_string());
278    }
279    if let Some(local_var_param_value) = acl {
280        local_var_form_params.insert("acl", local_var_param_value.to_string());
281    }
282    if let Some(local_var_param_value) = bucket_name {
283        local_var_form_params.insert("bucket_name", local_var_param_value.to_string());
284    }
285    if let Some(local_var_param_value) = domain {
286        local_var_form_params.insert("domain", local_var_param_value.to_string());
287    }
288    if let Some(local_var_param_value) = iam_role {
289        local_var_form_params.insert("iam_role", local_var_param_value.to_string());
290    }
291    if let Some(local_var_param_value) = path {
292        local_var_form_params.insert("path", local_var_param_value.to_string());
293    }
294    if let Some(local_var_param_value) = public_key {
295        local_var_form_params.insert("public_key", local_var_param_value.to_string());
296    }
297    if let Some(local_var_param_value) = redundancy {
298        local_var_form_params.insert("redundancy", local_var_param_value.to_string());
299    }
300    if let Some(local_var_param_value) = secret_key {
301        local_var_form_params.insert("secret_key", local_var_param_value.to_string());
302    }
303    if let Some(local_var_param_value) = server_side_encryption_kms_key_id {
304        local_var_form_params.insert("server_side_encryption_kms_key_id", local_var_param_value.to_string());
305    }
306    if let Some(local_var_param_value) = server_side_encryption {
307        local_var_form_params.insert("server_side_encryption", local_var_param_value.to_string());
308    }
309    if let Some(local_var_param_value) = file_max_bytes {
310        local_var_form_params.insert("file_max_bytes", local_var_param_value.to_string());
311    }
312    local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
313
314    let local_var_req = local_var_req_builder.build()?;
315    let local_var_resp = local_var_client.execute(local_var_req).await?;
316
317    if "POST" != "GET" && "POST" != "HEAD" {
318      let headers = local_var_resp.headers();
319      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
320          Some(v) => v.to_str().unwrap().parse().unwrap(),
321          None => configuration::DEFAULT_RATELIMIT,
322      };
323      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
324          Some(v) => v.to_str().unwrap().parse().unwrap(),
325          None => 0,
326      };
327    }
328
329    let local_var_status = local_var_resp.status();
330    let local_var_content = local_var_resp.text().await?;
331
332    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
333        serde_json::from_str(&local_var_content).map_err(Error::from)
334    } else {
335        let local_var_entity: Option<CreateLogAwsS3Error> = serde_json::from_str(&local_var_content).ok();
336        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
337        Err(Error::ResponseError(local_var_error))
338    }
339}
340
341/// Delete the S3 for a particular service and version.
342pub async fn delete_log_aws_s3(configuration: &mut configuration::Configuration, params: DeleteLogAwsS3Params) -> Result<crate::models::InlineResponse200, Error<DeleteLogAwsS3Error>> {
343    let local_var_configuration = configuration;
344
345    // unbox the parameters
346    let service_id = params.service_id;
347    let version_id = params.version_id;
348    let logging_s3_name = params.logging_s3_name;
349
350
351    let local_var_client = &local_var_configuration.client;
352
353    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/logging/s3/{logging_s3_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, logging_s3_name=crate::apis::urlencode(logging_s3_name));
354    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
355
356    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
357        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
358    }
359    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
360        let local_var_key = local_var_apikey.key.clone();
361        let local_var_value = match local_var_apikey.prefix {
362            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
363            None => local_var_key,
364        };
365        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
366    };
367
368    let local_var_req = local_var_req_builder.build()?;
369    let local_var_resp = local_var_client.execute(local_var_req).await?;
370
371    if "DELETE" != "GET" && "DELETE" != "HEAD" {
372      let headers = local_var_resp.headers();
373      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
374          Some(v) => v.to_str().unwrap().parse().unwrap(),
375          None => configuration::DEFAULT_RATELIMIT,
376      };
377      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
378          Some(v) => v.to_str().unwrap().parse().unwrap(),
379          None => 0,
380      };
381    }
382
383    let local_var_status = local_var_resp.status();
384    let local_var_content = local_var_resp.text().await?;
385
386    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
387        serde_json::from_str(&local_var_content).map_err(Error::from)
388    } else {
389        let local_var_entity: Option<DeleteLogAwsS3Error> = serde_json::from_str(&local_var_content).ok();
390        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
391        Err(Error::ResponseError(local_var_error))
392    }
393}
394
395/// Get the S3 for a particular service and version.
396pub async fn get_log_aws_s3(configuration: &mut configuration::Configuration, params: GetLogAwsS3Params) -> Result<crate::models::LoggingS3Response, Error<GetLogAwsS3Error>> {
397    let local_var_configuration = configuration;
398
399    // unbox the parameters
400    let service_id = params.service_id;
401    let version_id = params.version_id;
402    let logging_s3_name = params.logging_s3_name;
403
404
405    let local_var_client = &local_var_configuration.client;
406
407    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/logging/s3/{logging_s3_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, logging_s3_name=crate::apis::urlencode(logging_s3_name));
408    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
409
410    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
411        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
412    }
413    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
414        let local_var_key = local_var_apikey.key.clone();
415        let local_var_value = match local_var_apikey.prefix {
416            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
417            None => local_var_key,
418        };
419        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
420    };
421
422    let local_var_req = local_var_req_builder.build()?;
423    let local_var_resp = local_var_client.execute(local_var_req).await?;
424
425    if "GET" != "GET" && "GET" != "HEAD" {
426      let headers = local_var_resp.headers();
427      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
428          Some(v) => v.to_str().unwrap().parse().unwrap(),
429          None => configuration::DEFAULT_RATELIMIT,
430      };
431      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
432          Some(v) => v.to_str().unwrap().parse().unwrap(),
433          None => 0,
434      };
435    }
436
437    let local_var_status = local_var_resp.status();
438    let local_var_content = local_var_resp.text().await?;
439
440    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
441        serde_json::from_str(&local_var_content).map_err(Error::from)
442    } else {
443        let local_var_entity: Option<GetLogAwsS3Error> = serde_json::from_str(&local_var_content).ok();
444        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
445        Err(Error::ResponseError(local_var_error))
446    }
447}
448
449/// List all of the S3s for a particular service and version.
450pub async fn list_log_aws_s3(configuration: &mut configuration::Configuration, params: ListLogAwsS3Params) -> Result<Vec<crate::models::LoggingS3Response>, Error<ListLogAwsS3Error>> {
451    let local_var_configuration = configuration;
452
453    // unbox the parameters
454    let service_id = params.service_id;
455    let version_id = params.version_id;
456
457
458    let local_var_client = &local_var_configuration.client;
459
460    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/logging/s3", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id);
461    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
462
463    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
464        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
465    }
466    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
467        let local_var_key = local_var_apikey.key.clone();
468        let local_var_value = match local_var_apikey.prefix {
469            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
470            None => local_var_key,
471        };
472        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
473    };
474
475    let local_var_req = local_var_req_builder.build()?;
476    let local_var_resp = local_var_client.execute(local_var_req).await?;
477
478    if "GET" != "GET" && "GET" != "HEAD" {
479      let headers = local_var_resp.headers();
480      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
481          Some(v) => v.to_str().unwrap().parse().unwrap(),
482          None => configuration::DEFAULT_RATELIMIT,
483      };
484      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
485          Some(v) => v.to_str().unwrap().parse().unwrap(),
486          None => 0,
487      };
488    }
489
490    let local_var_status = local_var_resp.status();
491    let local_var_content = local_var_resp.text().await?;
492
493    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
494        serde_json::from_str(&local_var_content).map_err(Error::from)
495    } else {
496        let local_var_entity: Option<ListLogAwsS3Error> = serde_json::from_str(&local_var_content).ok();
497        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
498        Err(Error::ResponseError(local_var_error))
499    }
500}
501
502/// Update the S3 for a particular service and version.
503pub async fn update_log_aws_s3(configuration: &mut configuration::Configuration, params: UpdateLogAwsS3Params) -> Result<crate::models::LoggingS3Response, Error<UpdateLogAwsS3Error>> {
504    let local_var_configuration = configuration;
505
506    // unbox the parameters
507    let service_id = params.service_id;
508    let version_id = params.version_id;
509    let logging_s3_name = params.logging_s3_name;
510    let name = params.name;
511    let placement = params.placement;
512    let response_condition = params.response_condition;
513    let format = params.format;
514    let log_processing_region = params.log_processing_region;
515    let format_version = params.format_version;
516    let message_type = params.message_type;
517    let timestamp_format = params.timestamp_format;
518    let compression_codec = params.compression_codec;
519    let period = params.period;
520    let gzip_level = params.gzip_level;
521    let access_key = params.access_key;
522    let acl = params.acl;
523    let bucket_name = params.bucket_name;
524    let domain = params.domain;
525    let iam_role = params.iam_role;
526    let path = params.path;
527    let public_key = params.public_key;
528    let redundancy = params.redundancy;
529    let secret_key = params.secret_key;
530    let server_side_encryption_kms_key_id = params.server_side_encryption_kms_key_id;
531    let server_side_encryption = params.server_side_encryption;
532    let file_max_bytes = params.file_max_bytes;
533
534
535    let local_var_client = &local_var_configuration.client;
536
537    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/logging/s3/{logging_s3_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, logging_s3_name=crate::apis::urlencode(logging_s3_name));
538    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
539
540    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
541        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
542    }
543    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
544        let local_var_key = local_var_apikey.key.clone();
545        let local_var_value = match local_var_apikey.prefix {
546            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
547            None => local_var_key,
548        };
549        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
550    };
551    let mut local_var_form_params = std::collections::HashMap::new();
552    if let Some(local_var_param_value) = name {
553        local_var_form_params.insert("name", local_var_param_value.to_string());
554    }
555    if let Some(local_var_param_value) = placement {
556        local_var_form_params.insert("placement", local_var_param_value.to_string());
557    }
558    if let Some(local_var_param_value) = response_condition {
559        local_var_form_params.insert("response_condition", local_var_param_value.to_string());
560    }
561    if let Some(local_var_param_value) = format {
562        local_var_form_params.insert("format", local_var_param_value.to_string());
563    }
564    if let Some(local_var_param_value) = log_processing_region {
565        local_var_form_params.insert("log_processing_region", local_var_param_value.to_string());
566    }
567    if let Some(local_var_param_value) = format_version {
568        local_var_form_params.insert("format_version", local_var_param_value.to_string());
569    }
570    if let Some(local_var_param_value) = message_type {
571        local_var_form_params.insert("message_type", local_var_param_value.to_string());
572    }
573    if let Some(local_var_param_value) = timestamp_format {
574        local_var_form_params.insert("timestamp_format", local_var_param_value.to_string());
575    }
576    if let Some(local_var_param_value) = compression_codec {
577        local_var_form_params.insert("compression_codec", local_var_param_value.to_string());
578    }
579    if let Some(local_var_param_value) = period {
580        local_var_form_params.insert("period", local_var_param_value.to_string());
581    }
582    if let Some(local_var_param_value) = gzip_level {
583        local_var_form_params.insert("gzip_level", local_var_param_value.to_string());
584    }
585    if let Some(local_var_param_value) = access_key {
586        local_var_form_params.insert("access_key", local_var_param_value.to_string());
587    }
588    if let Some(local_var_param_value) = acl {
589        local_var_form_params.insert("acl", local_var_param_value.to_string());
590    }
591    if let Some(local_var_param_value) = bucket_name {
592        local_var_form_params.insert("bucket_name", local_var_param_value.to_string());
593    }
594    if let Some(local_var_param_value) = domain {
595        local_var_form_params.insert("domain", local_var_param_value.to_string());
596    }
597    if let Some(local_var_param_value) = iam_role {
598        local_var_form_params.insert("iam_role", local_var_param_value.to_string());
599    }
600    if let Some(local_var_param_value) = path {
601        local_var_form_params.insert("path", local_var_param_value.to_string());
602    }
603    if let Some(local_var_param_value) = public_key {
604        local_var_form_params.insert("public_key", local_var_param_value.to_string());
605    }
606    if let Some(local_var_param_value) = redundancy {
607        local_var_form_params.insert("redundancy", local_var_param_value.to_string());
608    }
609    if let Some(local_var_param_value) = secret_key {
610        local_var_form_params.insert("secret_key", local_var_param_value.to_string());
611    }
612    if let Some(local_var_param_value) = server_side_encryption_kms_key_id {
613        local_var_form_params.insert("server_side_encryption_kms_key_id", local_var_param_value.to_string());
614    }
615    if let Some(local_var_param_value) = server_side_encryption {
616        local_var_form_params.insert("server_side_encryption", local_var_param_value.to_string());
617    }
618    if let Some(local_var_param_value) = file_max_bytes {
619        local_var_form_params.insert("file_max_bytes", local_var_param_value.to_string());
620    }
621    local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
622
623    let local_var_req = local_var_req_builder.build()?;
624    let local_var_resp = local_var_client.execute(local_var_req).await?;
625
626    if "PUT" != "GET" && "PUT" != "HEAD" {
627      let headers = local_var_resp.headers();
628      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
629          Some(v) => v.to_str().unwrap().parse().unwrap(),
630          None => configuration::DEFAULT_RATELIMIT,
631      };
632      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
633          Some(v) => v.to_str().unwrap().parse().unwrap(),
634          None => 0,
635      };
636    }
637
638    let local_var_status = local_var_resp.status();
639    let local_var_content = local_var_resp.text().await?;
640
641    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
642        serde_json::from_str(&local_var_content).map_err(Error::from)
643    } else {
644        let local_var_entity: Option<UpdateLogAwsS3Error> = serde_json::from_str(&local_var_content).ok();
645        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
646        Err(Error::ResponseError(local_var_error))
647    }
648}
649