1use reqwest;
10
11use crate::apis::ResponseContent;
12use super::{Error, configuration};
13
14#[derive(Clone, Debug, Default)]
16pub struct CreateLogSftpParams {
17 pub service_id: String,
19 pub version_id: i32,
21 pub name: Option<String>,
23 pub placement: Option<String>,
25 pub response_condition: Option<String>,
27 pub format: Option<String>,
29 pub format_version: Option<i32>,
31 pub message_type: Option<String>,
33 pub timestamp_format: Option<String>,
35 pub compression_codec: Option<String>,
37 pub period: Option<i32>,
39 pub gzip_level: Option<i32>,
41 pub address: Option<String>,
43 pub port: Option<i32>,
45 pub password: Option<String>,
47 pub path: Option<String>,
49 pub public_key: Option<String>,
51 pub secret_key: Option<String>,
53 pub ssh_known_hosts: Option<String>,
55 pub user: Option<String>
57}
58
59#[derive(Clone, Debug, Default)]
61pub struct DeleteLogSftpParams {
62 pub service_id: String,
64 pub version_id: i32,
66 pub logging_sftp_name: String
68}
69
70#[derive(Clone, Debug, Default)]
72pub struct GetLogSftpParams {
73 pub service_id: String,
75 pub version_id: i32,
77 pub logging_sftp_name: String
79}
80
81#[derive(Clone, Debug, Default)]
83pub struct ListLogSftpParams {
84 pub service_id: String,
86 pub version_id: i32
88}
89
90#[derive(Clone, Debug, Default)]
92pub struct UpdateLogSftpParams {
93 pub service_id: String,
95 pub version_id: i32,
97 pub logging_sftp_name: String,
99 pub name: Option<String>,
101 pub placement: Option<String>,
103 pub response_condition: Option<String>,
105 pub format: Option<String>,
107 pub format_version: Option<i32>,
109 pub message_type: Option<String>,
111 pub timestamp_format: Option<String>,
113 pub compression_codec: Option<String>,
115 pub period: Option<i32>,
117 pub gzip_level: Option<i32>,
119 pub address: Option<String>,
121 pub port: Option<i32>,
123 pub password: Option<String>,
125 pub path: Option<String>,
127 pub public_key: Option<String>,
129 pub secret_key: Option<String>,
131 pub ssh_known_hosts: Option<String>,
133 pub user: Option<String>
135}
136
137
138#[derive(Debug, Clone, Serialize, Deserialize)]
140#[serde(untagged)]
141pub enum CreateLogSftpError {
142 UnknownValue(serde_json::Value),
143}
144
145#[derive(Debug, Clone, Serialize, Deserialize)]
147#[serde(untagged)]
148pub enum DeleteLogSftpError {
149 UnknownValue(serde_json::Value),
150}
151
152#[derive(Debug, Clone, Serialize, Deserialize)]
154#[serde(untagged)]
155pub enum GetLogSftpError {
156 UnknownValue(serde_json::Value),
157}
158
159#[derive(Debug, Clone, Serialize, Deserialize)]
161#[serde(untagged)]
162pub enum ListLogSftpError {
163 UnknownValue(serde_json::Value),
164}
165
166#[derive(Debug, Clone, Serialize, Deserialize)]
168#[serde(untagged)]
169pub enum UpdateLogSftpError {
170 UnknownValue(serde_json::Value),
171}
172
173
174pub async fn create_log_sftp(configuration: &mut configuration::Configuration, params: CreateLogSftpParams) -> Result<crate::models::LoggingSftpResponse, Error<CreateLogSftpError>> {
176 let local_var_configuration = configuration;
177
178 let service_id = params.service_id;
180 let version_id = params.version_id;
181 let name = params.name;
182 let placement = params.placement;
183 let response_condition = params.response_condition;
184 let format = params.format;
185 let format_version = params.format_version;
186 let message_type = params.message_type;
187 let timestamp_format = params.timestamp_format;
188 let compression_codec = params.compression_codec;
189 let period = params.period;
190 let gzip_level = params.gzip_level;
191 let address = params.address;
192 let port = params.port;
193 let password = params.password;
194 let path = params.path;
195 let public_key = params.public_key;
196 let secret_key = params.secret_key;
197 let ssh_known_hosts = params.ssh_known_hosts;
198 let user = params.user;
199
200
201 let local_var_client = &local_var_configuration.client;
202
203 let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/logging/sftp", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id);
204 let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
205
206 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
207 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
208 }
209 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
210 let local_var_key = local_var_apikey.key.clone();
211 let local_var_value = match local_var_apikey.prefix {
212 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
213 None => local_var_key,
214 };
215 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
216 };
217 let mut local_var_form_params = std::collections::HashMap::new();
218 if let Some(local_var_param_value) = name {
219 local_var_form_params.insert("name", local_var_param_value.to_string());
220 }
221 if let Some(local_var_param_value) = placement {
222 local_var_form_params.insert("placement", local_var_param_value.to_string());
223 }
224 if let Some(local_var_param_value) = response_condition {
225 local_var_form_params.insert("response_condition", local_var_param_value.to_string());
226 }
227 if let Some(local_var_param_value) = format {
228 local_var_form_params.insert("format", local_var_param_value.to_string());
229 }
230 if let Some(local_var_param_value) = format_version {
231 local_var_form_params.insert("format_version", local_var_param_value.to_string());
232 }
233 if let Some(local_var_param_value) = message_type {
234 local_var_form_params.insert("message_type", local_var_param_value.to_string());
235 }
236 if let Some(local_var_param_value) = timestamp_format {
237 local_var_form_params.insert("timestamp_format", local_var_param_value.to_string());
238 }
239 if let Some(local_var_param_value) = compression_codec {
240 local_var_form_params.insert("compression_codec", local_var_param_value.to_string());
241 }
242 if let Some(local_var_param_value) = period {
243 local_var_form_params.insert("period", local_var_param_value.to_string());
244 }
245 if let Some(local_var_param_value) = gzip_level {
246 local_var_form_params.insert("gzip_level", local_var_param_value.to_string());
247 }
248 if let Some(local_var_param_value) = address {
249 local_var_form_params.insert("address", local_var_param_value.to_string());
250 }
251 if let Some(local_var_param_value) = port {
252 local_var_form_params.insert("port", local_var_param_value.to_string());
253 }
254 if let Some(local_var_param_value) = password {
255 local_var_form_params.insert("password", local_var_param_value.to_string());
256 }
257 if let Some(local_var_param_value) = path {
258 local_var_form_params.insert("path", local_var_param_value.to_string());
259 }
260 if let Some(local_var_param_value) = public_key {
261 local_var_form_params.insert("public_key", local_var_param_value.to_string());
262 }
263 if let Some(local_var_param_value) = secret_key {
264 local_var_form_params.insert("secret_key", local_var_param_value.to_string());
265 }
266 if let Some(local_var_param_value) = ssh_known_hosts {
267 local_var_form_params.insert("ssh_known_hosts", local_var_param_value.to_string());
268 }
269 if let Some(local_var_param_value) = user {
270 local_var_form_params.insert("user", local_var_param_value.to_string());
271 }
272 local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
273
274 let local_var_req = local_var_req_builder.build()?;
275 let local_var_resp = local_var_client.execute(local_var_req).await?;
276
277 if "POST" != "GET" && "POST" != "HEAD" {
278 let headers = local_var_resp.headers();
279 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
280 Some(v) => v.to_str().unwrap().parse().unwrap(),
281 None => configuration::DEFAULT_RATELIMIT,
282 };
283 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
284 Some(v) => v.to_str().unwrap().parse().unwrap(),
285 None => 0,
286 };
287 }
288
289 let local_var_status = local_var_resp.status();
290 let local_var_content = local_var_resp.text().await?;
291
292 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
293 serde_json::from_str(&local_var_content).map_err(Error::from)
294 } else {
295 let local_var_entity: Option<CreateLogSftpError> = serde_json::from_str(&local_var_content).ok();
296 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
297 Err(Error::ResponseError(local_var_error))
298 }
299}
300
301pub async fn delete_log_sftp(configuration: &mut configuration::Configuration, params: DeleteLogSftpParams) -> Result<crate::models::InlineResponse200, Error<DeleteLogSftpError>> {
303 let local_var_configuration = configuration;
304
305 let service_id = params.service_id;
307 let version_id = params.version_id;
308 let logging_sftp_name = params.logging_sftp_name;
309
310
311 let local_var_client = &local_var_configuration.client;
312
313 let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/logging/sftp/{logging_sftp_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, logging_sftp_name=crate::apis::urlencode(logging_sftp_name));
314 let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
315
316 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
317 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
318 }
319 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
320 let local_var_key = local_var_apikey.key.clone();
321 let local_var_value = match local_var_apikey.prefix {
322 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
323 None => local_var_key,
324 };
325 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
326 };
327
328 let local_var_req = local_var_req_builder.build()?;
329 let local_var_resp = local_var_client.execute(local_var_req).await?;
330
331 if "DELETE" != "GET" && "DELETE" != "HEAD" {
332 let headers = local_var_resp.headers();
333 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
334 Some(v) => v.to_str().unwrap().parse().unwrap(),
335 None => configuration::DEFAULT_RATELIMIT,
336 };
337 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
338 Some(v) => v.to_str().unwrap().parse().unwrap(),
339 None => 0,
340 };
341 }
342
343 let local_var_status = local_var_resp.status();
344 let local_var_content = local_var_resp.text().await?;
345
346 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
347 serde_json::from_str(&local_var_content).map_err(Error::from)
348 } else {
349 let local_var_entity: Option<DeleteLogSftpError> = serde_json::from_str(&local_var_content).ok();
350 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
351 Err(Error::ResponseError(local_var_error))
352 }
353}
354
355pub async fn get_log_sftp(configuration: &mut configuration::Configuration, params: GetLogSftpParams) -> Result<crate::models::LoggingSftpResponse, Error<GetLogSftpError>> {
357 let local_var_configuration = configuration;
358
359 let service_id = params.service_id;
361 let version_id = params.version_id;
362 let logging_sftp_name = params.logging_sftp_name;
363
364
365 let local_var_client = &local_var_configuration.client;
366
367 let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/logging/sftp/{logging_sftp_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, logging_sftp_name=crate::apis::urlencode(logging_sftp_name));
368 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
369
370 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
371 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
372 }
373 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
374 let local_var_key = local_var_apikey.key.clone();
375 let local_var_value = match local_var_apikey.prefix {
376 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
377 None => local_var_key,
378 };
379 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
380 };
381
382 let local_var_req = local_var_req_builder.build()?;
383 let local_var_resp = local_var_client.execute(local_var_req).await?;
384
385 if "GET" != "GET" && "GET" != "HEAD" {
386 let headers = local_var_resp.headers();
387 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
388 Some(v) => v.to_str().unwrap().parse().unwrap(),
389 None => configuration::DEFAULT_RATELIMIT,
390 };
391 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
392 Some(v) => v.to_str().unwrap().parse().unwrap(),
393 None => 0,
394 };
395 }
396
397 let local_var_status = local_var_resp.status();
398 let local_var_content = local_var_resp.text().await?;
399
400 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
401 serde_json::from_str(&local_var_content).map_err(Error::from)
402 } else {
403 let local_var_entity: Option<GetLogSftpError> = serde_json::from_str(&local_var_content).ok();
404 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
405 Err(Error::ResponseError(local_var_error))
406 }
407}
408
409pub async fn list_log_sftp(configuration: &mut configuration::Configuration, params: ListLogSftpParams) -> Result<Vec<crate::models::LoggingSftpResponse>, Error<ListLogSftpError>> {
411 let local_var_configuration = configuration;
412
413 let service_id = params.service_id;
415 let version_id = params.version_id;
416
417
418 let local_var_client = &local_var_configuration.client;
419
420 let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/logging/sftp", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id);
421 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
422
423 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
424 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
425 }
426 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
427 let local_var_key = local_var_apikey.key.clone();
428 let local_var_value = match local_var_apikey.prefix {
429 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
430 None => local_var_key,
431 };
432 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
433 };
434
435 let local_var_req = local_var_req_builder.build()?;
436 let local_var_resp = local_var_client.execute(local_var_req).await?;
437
438 if "GET" != "GET" && "GET" != "HEAD" {
439 let headers = local_var_resp.headers();
440 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
441 Some(v) => v.to_str().unwrap().parse().unwrap(),
442 None => configuration::DEFAULT_RATELIMIT,
443 };
444 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
445 Some(v) => v.to_str().unwrap().parse().unwrap(),
446 None => 0,
447 };
448 }
449
450 let local_var_status = local_var_resp.status();
451 let local_var_content = local_var_resp.text().await?;
452
453 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
454 serde_json::from_str(&local_var_content).map_err(Error::from)
455 } else {
456 let local_var_entity: Option<ListLogSftpError> = serde_json::from_str(&local_var_content).ok();
457 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
458 Err(Error::ResponseError(local_var_error))
459 }
460}
461
462pub async fn update_log_sftp(configuration: &mut configuration::Configuration, params: UpdateLogSftpParams) -> Result<crate::models::LoggingSftpResponse, Error<UpdateLogSftpError>> {
464 let local_var_configuration = configuration;
465
466 let service_id = params.service_id;
468 let version_id = params.version_id;
469 let logging_sftp_name = params.logging_sftp_name;
470 let name = params.name;
471 let placement = params.placement;
472 let response_condition = params.response_condition;
473 let format = params.format;
474 let format_version = params.format_version;
475 let message_type = params.message_type;
476 let timestamp_format = params.timestamp_format;
477 let compression_codec = params.compression_codec;
478 let period = params.period;
479 let gzip_level = params.gzip_level;
480 let address = params.address;
481 let port = params.port;
482 let password = params.password;
483 let path = params.path;
484 let public_key = params.public_key;
485 let secret_key = params.secret_key;
486 let ssh_known_hosts = params.ssh_known_hosts;
487 let user = params.user;
488
489
490 let local_var_client = &local_var_configuration.client;
491
492 let local_var_uri_str = format!("{}/service/{service_id}/version/{version_id}/logging/sftp/{logging_sftp_name}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id), version_id=version_id, logging_sftp_name=crate::apis::urlencode(logging_sftp_name));
493 let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
494
495 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
496 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
497 }
498 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
499 let local_var_key = local_var_apikey.key.clone();
500 let local_var_value = match local_var_apikey.prefix {
501 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
502 None => local_var_key,
503 };
504 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
505 };
506 let mut local_var_form_params = std::collections::HashMap::new();
507 if let Some(local_var_param_value) = name {
508 local_var_form_params.insert("name", local_var_param_value.to_string());
509 }
510 if let Some(local_var_param_value) = placement {
511 local_var_form_params.insert("placement", local_var_param_value.to_string());
512 }
513 if let Some(local_var_param_value) = response_condition {
514 local_var_form_params.insert("response_condition", local_var_param_value.to_string());
515 }
516 if let Some(local_var_param_value) = format {
517 local_var_form_params.insert("format", local_var_param_value.to_string());
518 }
519 if let Some(local_var_param_value) = format_version {
520 local_var_form_params.insert("format_version", local_var_param_value.to_string());
521 }
522 if let Some(local_var_param_value) = message_type {
523 local_var_form_params.insert("message_type", local_var_param_value.to_string());
524 }
525 if let Some(local_var_param_value) = timestamp_format {
526 local_var_form_params.insert("timestamp_format", local_var_param_value.to_string());
527 }
528 if let Some(local_var_param_value) = compression_codec {
529 local_var_form_params.insert("compression_codec", local_var_param_value.to_string());
530 }
531 if let Some(local_var_param_value) = period {
532 local_var_form_params.insert("period", local_var_param_value.to_string());
533 }
534 if let Some(local_var_param_value) = gzip_level {
535 local_var_form_params.insert("gzip_level", local_var_param_value.to_string());
536 }
537 if let Some(local_var_param_value) = address {
538 local_var_form_params.insert("address", local_var_param_value.to_string());
539 }
540 if let Some(local_var_param_value) = port {
541 local_var_form_params.insert("port", local_var_param_value.to_string());
542 }
543 if let Some(local_var_param_value) = password {
544 local_var_form_params.insert("password", local_var_param_value.to_string());
545 }
546 if let Some(local_var_param_value) = path {
547 local_var_form_params.insert("path", local_var_param_value.to_string());
548 }
549 if let Some(local_var_param_value) = public_key {
550 local_var_form_params.insert("public_key", local_var_param_value.to_string());
551 }
552 if let Some(local_var_param_value) = secret_key {
553 local_var_form_params.insert("secret_key", local_var_param_value.to_string());
554 }
555 if let Some(local_var_param_value) = ssh_known_hosts {
556 local_var_form_params.insert("ssh_known_hosts", local_var_param_value.to_string());
557 }
558 if let Some(local_var_param_value) = user {
559 local_var_form_params.insert("user", local_var_param_value.to_string());
560 }
561 local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
562
563 let local_var_req = local_var_req_builder.build()?;
564 let local_var_resp = local_var_client.execute(local_var_req).await?;
565
566 if "PUT" != "GET" && "PUT" != "HEAD" {
567 let headers = local_var_resp.headers();
568 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
569 Some(v) => v.to_str().unwrap().parse().unwrap(),
570 None => configuration::DEFAULT_RATELIMIT,
571 };
572 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
573 Some(v) => v.to_str().unwrap().parse().unwrap(),
574 None => 0,
575 };
576 }
577
578 let local_var_status = local_var_resp.status();
579 let local_var_content = local_var_resp.text().await?;
580
581 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
582 serde_json::from_str(&local_var_content).map_err(Error::from)
583 } else {
584 let local_var_entity: Option<UpdateLogSftpError> = serde_json::from_str(&local_var_content).ok();
585 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
586 Err(Error::ResponseError(local_var_error))
587 }
588}
589