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