fastly_api/apis/
logging_kafka_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_kafka`]
15#[derive(Clone, Debug, Default)]
16pub struct CreateLogKafkaParams {
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    /// A secure certificate to authenticate a server with. Must be in PEM format.
34    pub tls_ca_cert: Option<String>,
35    /// The client certificate used to make authenticated requests. Must be in PEM format.
36    pub tls_client_cert: Option<String>,
37    /// The client private key used to make authenticated requests. Must be in PEM format.
38    pub tls_client_key: Option<String>,
39    /// The hostname to verify the server's certificate. This should be one of the Subject Alternative Name (SAN) fields for the certificate. Common Names (CN) are not supported.
40    pub tls_hostname: Option<String>,
41    /// The Kafka topic to send logs to. Required.
42    pub topic: Option<String>,
43    /// A comma-separated list of IP addresses or hostnames of Kafka brokers. Required.
44    pub brokers: Option<String>,
45    /// The codec used for compression of your logs.
46    pub compression_codec: Option<String>,
47    /// The number of acknowledgements a leader must receive before a write is considered successful.
48    pub required_acks: Option<i32>,
49    /// The maximum number of bytes sent in one request. Defaults `0` (no limit).
50    pub request_max_bytes: Option<i32>,
51    /// Enables parsing of key=value tuples from the beginning of a logline, turning them into [record headers](https://cwiki.apache.org/confluence/display/KAFKA/KIP-82+-+Add+Record+Headers).
52    pub parse_log_keyvals: Option<bool>,
53    /// SASL authentication method.
54    pub auth_method: Option<String>,
55    /// SASL user.
56    pub user: Option<String>,
57    /// SASL password.
58    pub password: Option<String>,
59    pub use_tls: Option<crate::models::LoggingUseTlsString>
60}
61
62/// struct for passing parameters to the method [`delete_log_kafka`]
63#[derive(Clone, Debug, Default)]
64pub struct DeleteLogKafkaParams {
65    /// Alphanumeric string identifying the service.
66    pub service_id: String,
67    /// Integer identifying a service version.
68    pub version_id: i32,
69    /// The name for the real-time logging configuration.
70    pub logging_kafka_name: String
71}
72
73/// struct for passing parameters to the method [`get_log_kafka`]
74#[derive(Clone, Debug, Default)]
75pub struct GetLogKafkaParams {
76    /// Alphanumeric string identifying the service.
77    pub service_id: String,
78    /// Integer identifying a service version.
79    pub version_id: i32,
80    /// The name for the real-time logging configuration.
81    pub logging_kafka_name: String
82}
83
84/// struct for passing parameters to the method [`list_log_kafka`]
85#[derive(Clone, Debug, Default)]
86pub struct ListLogKafkaParams {
87    /// Alphanumeric string identifying the service.
88    pub service_id: String,
89    /// Integer identifying a service version.
90    pub version_id: i32
91}
92
93/// struct for passing parameters to the method [`update_log_kafka`]
94#[derive(Clone, Debug, Default)]
95pub struct UpdateLogKafkaParams {
96    /// Alphanumeric string identifying the service.
97    pub service_id: String,
98    /// Integer identifying a service version.
99    pub version_id: i32,
100    /// The name for the real-time logging configuration.
101    pub logging_kafka_name: String
102}
103
104
105/// struct for typed errors of method [`create_log_kafka`]
106#[derive(Debug, Clone, Serialize, Deserialize)]
107#[serde(untagged)]
108pub enum CreateLogKafkaError {
109    UnknownValue(serde_json::Value),
110}
111
112/// struct for typed errors of method [`delete_log_kafka`]
113#[derive(Debug, Clone, Serialize, Deserialize)]
114#[serde(untagged)]
115pub enum DeleteLogKafkaError {
116    UnknownValue(serde_json::Value),
117}
118
119/// struct for typed errors of method [`get_log_kafka`]
120#[derive(Debug, Clone, Serialize, Deserialize)]
121#[serde(untagged)]
122pub enum GetLogKafkaError {
123    UnknownValue(serde_json::Value),
124}
125
126/// struct for typed errors of method [`list_log_kafka`]
127#[derive(Debug, Clone, Serialize, Deserialize)]
128#[serde(untagged)]
129pub enum ListLogKafkaError {
130    UnknownValue(serde_json::Value),
131}
132
133/// struct for typed errors of method [`update_log_kafka`]
134#[derive(Debug, Clone, Serialize, Deserialize)]
135#[serde(untagged)]
136pub enum UpdateLogKafkaError {
137    UnknownValue(serde_json::Value),
138}
139
140
141/// Create a Kafka logging endpoint for a particular service and version.
142pub async fn create_log_kafka(configuration: &mut configuration::Configuration, params: CreateLogKafkaParams) -> Result<crate::models::LoggingKafkaResponsePost, Error<CreateLogKafkaError>> {
143    let local_var_configuration = configuration;
144
145    // unbox the parameters
146    let service_id = params.service_id;
147    let version_id = params.version_id;
148    let name = params.name;
149    let placement = params.placement;
150    let response_condition = params.response_condition;
151    let format = params.format;
152    let log_processing_region = params.log_processing_region;
153    let format_version = params.format_version;
154    let tls_ca_cert = params.tls_ca_cert;
155    let tls_client_cert = params.tls_client_cert;
156    let tls_client_key = params.tls_client_key;
157    let tls_hostname = params.tls_hostname;
158    let topic = params.topic;
159    let brokers = params.brokers;
160    let compression_codec = params.compression_codec;
161    let required_acks = params.required_acks;
162    let request_max_bytes = params.request_max_bytes;
163    let parse_log_keyvals = params.parse_log_keyvals;
164    let auth_method = params.auth_method;
165    let user = params.user;
166    let password = params.password;
167    let use_tls = params.use_tls;
168
169
170    let local_var_client = &local_var_configuration.client;
171
172    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/logging/kafka", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id);
173    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
174
175    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
176        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
177    }
178    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
179        let local_var_key = local_var_apikey.key.clone();
180        let local_var_value = match local_var_apikey.prefix {
181            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
182            None => local_var_key,
183        };
184        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
185    };
186    let mut local_var_form_params = std::collections::HashMap::new();
187    if let Some(local_var_param_value) = name {
188        local_var_form_params.insert("name", local_var_param_value.to_string());
189    }
190    if let Some(local_var_param_value) = placement {
191        local_var_form_params.insert("placement", local_var_param_value.to_string());
192    }
193    if let Some(local_var_param_value) = response_condition {
194        local_var_form_params.insert("response_condition", local_var_param_value.to_string());
195    }
196    if let Some(local_var_param_value) = format {
197        local_var_form_params.insert("format", local_var_param_value.to_string());
198    }
199    if let Some(local_var_param_value) = log_processing_region {
200        local_var_form_params.insert("log_processing_region", local_var_param_value.to_string());
201    }
202    if let Some(local_var_param_value) = format_version {
203        local_var_form_params.insert("format_version", local_var_param_value.to_string());
204    }
205    if let Some(local_var_param_value) = tls_ca_cert {
206        local_var_form_params.insert("tls_ca_cert", local_var_param_value.to_string());
207    }
208    if let Some(local_var_param_value) = tls_client_cert {
209        local_var_form_params.insert("tls_client_cert", local_var_param_value.to_string());
210    }
211    if let Some(local_var_param_value) = tls_client_key {
212        local_var_form_params.insert("tls_client_key", local_var_param_value.to_string());
213    }
214    if let Some(local_var_param_value) = tls_hostname {
215        local_var_form_params.insert("tls_hostname", local_var_param_value.to_string());
216    }
217    if let Some(local_var_param_value) = topic {
218        local_var_form_params.insert("topic", local_var_param_value.to_string());
219    }
220    if let Some(local_var_param_value) = brokers {
221        local_var_form_params.insert("brokers", local_var_param_value.to_string());
222    }
223    if let Some(local_var_param_value) = compression_codec {
224        local_var_form_params.insert("compression_codec", local_var_param_value.to_string());
225    }
226    if let Some(local_var_param_value) = required_acks {
227        local_var_form_params.insert("required_acks", local_var_param_value.to_string());
228    }
229    if let Some(local_var_param_value) = request_max_bytes {
230        local_var_form_params.insert("request_max_bytes", local_var_param_value.to_string());
231    }
232    if let Some(local_var_param_value) = parse_log_keyvals {
233        local_var_form_params.insert("parse_log_keyvals", local_var_param_value.to_string());
234    }
235    if let Some(local_var_param_value) = auth_method {
236        local_var_form_params.insert("auth_method", local_var_param_value.to_string());
237    }
238    if let Some(local_var_param_value) = user {
239        local_var_form_params.insert("user", local_var_param_value.to_string());
240    }
241    if let Some(local_var_param_value) = password {
242        local_var_form_params.insert("password", local_var_param_value.to_string());
243    }
244    if let Some(local_var_param_value) = use_tls {
245        local_var_form_params.insert("use_tls", local_var_param_value.to_string());
246    }
247    local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
248
249    let local_var_req = local_var_req_builder.build()?;
250    let local_var_resp = local_var_client.execute(local_var_req).await?;
251
252    if "POST" != "GET" && "POST" != "HEAD" {
253      let headers = local_var_resp.headers();
254      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
255          Some(v) => v.to_str().unwrap().parse().unwrap(),
256          None => configuration::DEFAULT_RATELIMIT,
257      };
258      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
259          Some(v) => v.to_str().unwrap().parse().unwrap(),
260          None => 0,
261      };
262    }
263
264    let local_var_status = local_var_resp.status();
265    let local_var_content = local_var_resp.text().await?;
266
267    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
268        serde_json::from_str(&local_var_content).map_err(Error::from)
269    } else {
270        let local_var_entity: Option<CreateLogKafkaError> = serde_json::from_str(&local_var_content).ok();
271        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
272        Err(Error::ResponseError(local_var_error))
273    }
274}
275
276/// Delete the Kafka logging endpoint for a particular service and version.
277pub async fn delete_log_kafka(configuration: &mut configuration::Configuration, params: DeleteLogKafkaParams) -> Result<crate::models::InlineResponse200, Error<DeleteLogKafkaError>> {
278    let local_var_configuration = configuration;
279
280    // unbox the parameters
281    let service_id = params.service_id;
282    let version_id = params.version_id;
283    let logging_kafka_name = params.logging_kafka_name;
284
285
286    let local_var_client = &local_var_configuration.client;
287
288    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/logging/kafka/{logging_kafka_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, logging_kafka_name=crate::apis::urlencode(logging_kafka_name));
289    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
290
291    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
292        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
293    }
294    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
295        let local_var_key = local_var_apikey.key.clone();
296        let local_var_value = match local_var_apikey.prefix {
297            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
298            None => local_var_key,
299        };
300        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
301    };
302
303    let local_var_req = local_var_req_builder.build()?;
304    let local_var_resp = local_var_client.execute(local_var_req).await?;
305
306    if "DELETE" != "GET" && "DELETE" != "HEAD" {
307      let headers = local_var_resp.headers();
308      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
309          Some(v) => v.to_str().unwrap().parse().unwrap(),
310          None => configuration::DEFAULT_RATELIMIT,
311      };
312      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
313          Some(v) => v.to_str().unwrap().parse().unwrap(),
314          None => 0,
315      };
316    }
317
318    let local_var_status = local_var_resp.status();
319    let local_var_content = local_var_resp.text().await?;
320
321    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
322        serde_json::from_str(&local_var_content).map_err(Error::from)
323    } else {
324        let local_var_entity: Option<DeleteLogKafkaError> = serde_json::from_str(&local_var_content).ok();
325        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
326        Err(Error::ResponseError(local_var_error))
327    }
328}
329
330/// Get the Kafka logging endpoint for a particular service and version.
331pub async fn get_log_kafka(configuration: &mut configuration::Configuration, params: GetLogKafkaParams) -> Result<crate::models::LoggingKafkaResponse, Error<GetLogKafkaError>> {
332    let local_var_configuration = configuration;
333
334    // unbox the parameters
335    let service_id = params.service_id;
336    let version_id = params.version_id;
337    let logging_kafka_name = params.logging_kafka_name;
338
339
340    let local_var_client = &local_var_configuration.client;
341
342    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/logging/kafka/{logging_kafka_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, logging_kafka_name=crate::apis::urlencode(logging_kafka_name));
343    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
344
345    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
346        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
347    }
348    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
349        let local_var_key = local_var_apikey.key.clone();
350        let local_var_value = match local_var_apikey.prefix {
351            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
352            None => local_var_key,
353        };
354        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
355    };
356
357    let local_var_req = local_var_req_builder.build()?;
358    let local_var_resp = local_var_client.execute(local_var_req).await?;
359
360    if "GET" != "GET" && "GET" != "HEAD" {
361      let headers = local_var_resp.headers();
362      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
363          Some(v) => v.to_str().unwrap().parse().unwrap(),
364          None => configuration::DEFAULT_RATELIMIT,
365      };
366      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
367          Some(v) => v.to_str().unwrap().parse().unwrap(),
368          None => 0,
369      };
370    }
371
372    let local_var_status = local_var_resp.status();
373    let local_var_content = local_var_resp.text().await?;
374
375    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
376        serde_json::from_str(&local_var_content).map_err(Error::from)
377    } else {
378        let local_var_entity: Option<GetLogKafkaError> = serde_json::from_str(&local_var_content).ok();
379        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
380        Err(Error::ResponseError(local_var_error))
381    }
382}
383
384/// List all of the Kafka logging endpoints for a particular service and version.
385pub async fn list_log_kafka(configuration: &mut configuration::Configuration, params: ListLogKafkaParams) -> Result<Vec<crate::models::LoggingKafkaResponse>, Error<ListLogKafkaError>> {
386    let local_var_configuration = configuration;
387
388    // unbox the parameters
389    let service_id = params.service_id;
390    let version_id = params.version_id;
391
392
393    let local_var_client = &local_var_configuration.client;
394
395    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/logging/kafka", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id);
396    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
397
398    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
399        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
400    }
401    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
402        let local_var_key = local_var_apikey.key.clone();
403        let local_var_value = match local_var_apikey.prefix {
404            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
405            None => local_var_key,
406        };
407        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
408    };
409
410    let local_var_req = local_var_req_builder.build()?;
411    let local_var_resp = local_var_client.execute(local_var_req).await?;
412
413    if "GET" != "GET" && "GET" != "HEAD" {
414      let headers = local_var_resp.headers();
415      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
416          Some(v) => v.to_str().unwrap().parse().unwrap(),
417          None => configuration::DEFAULT_RATELIMIT,
418      };
419      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
420          Some(v) => v.to_str().unwrap().parse().unwrap(),
421          None => 0,
422      };
423    }
424
425    let local_var_status = local_var_resp.status();
426    let local_var_content = local_var_resp.text().await?;
427
428    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
429        serde_json::from_str(&local_var_content).map_err(Error::from)
430    } else {
431        let local_var_entity: Option<ListLogKafkaError> = serde_json::from_str(&local_var_content).ok();
432        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
433        Err(Error::ResponseError(local_var_error))
434    }
435}
436
437/// Update the Kafka logging endpoint for a particular service and version.
438pub async fn update_log_kafka(configuration: &mut configuration::Configuration, params: UpdateLogKafkaParams) -> Result<crate::models::LoggingKafkaResponse, Error<UpdateLogKafkaError>> {
439    let local_var_configuration = configuration;
440
441    // unbox the parameters
442    let service_id = params.service_id;
443    let version_id = params.version_id;
444    let logging_kafka_name = params.logging_kafka_name;
445
446
447    let local_var_client = &local_var_configuration.client;
448
449    let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/logging/kafka/{logging_kafka_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, logging_kafka_name=crate::apis::urlencode(logging_kafka_name));
450    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
451
452    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
453        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
454    }
455    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
456        let local_var_key = local_var_apikey.key.clone();
457        let local_var_value = match local_var_apikey.prefix {
458            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
459            None => local_var_key,
460        };
461        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
462    };
463
464    let local_var_req = local_var_req_builder.build()?;
465    let local_var_resp = local_var_client.execute(local_var_req).await?;
466
467    if "PUT" != "GET" && "PUT" != "HEAD" {
468      let headers = local_var_resp.headers();
469      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
470          Some(v) => v.to_str().unwrap().parse().unwrap(),
471          None => configuration::DEFAULT_RATELIMIT,
472      };
473      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
474          Some(v) => v.to_str().unwrap().parse().unwrap(),
475          None => 0,
476      };
477    }
478
479    let local_var_status = local_var_resp.status();
480    let local_var_content = local_var_resp.text().await?;
481
482    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
483        serde_json::from_str(&local_var_content).map_err(Error::from)
484    } else {
485        let local_var_entity: Option<UpdateLogKafkaError> = serde_json::from_str(&local_var_content).ok();
486        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
487        Err(Error::ResponseError(local_var_error))
488    }
489}
490