1use reqwest;
10
11use crate::apis::ResponseContent;
12use super::{Error, configuration};
13
14#[derive(Clone, Debug, Default)]
16pub struct BulkDeleteWafActiveRulesParams {
17 pub firewall_id: String,
19 pub version_id: i32,
21 pub request_body: Option<::std::collections::HashMap<String, serde_json::Value>>
22}
23
24#[derive(Clone, Debug, Default)]
26pub struct BulkUpdateWafActiveRulesParams {
27 pub firewall_id: String,
29 pub version_id: i32,
31 pub body: Option<crate::models::WafActiveRuleData>
32}
33
34#[derive(Clone, Debug, Default)]
36pub struct CreateWafActiveRuleParams {
37 pub firewall_id: String,
39 pub version_id: i32,
41 pub waf_active_rule: Option<crate::models::WafActiveRule>
42}
43
44#[derive(Clone, Debug, Default)]
46pub struct CreateWafActiveRulesTagParams {
47 pub firewall_id: String,
49 pub version_id: i32,
51 pub waf_tag_name: String,
53 pub waf_active_rule: Option<crate::models::WafActiveRule>
54}
55
56#[derive(Clone, Debug, Default)]
58pub struct DeleteWafActiveRuleParams {
59 pub firewall_id: String,
61 pub version_id: i32,
63 pub waf_rule_id: String
65}
66
67#[derive(Clone, Debug, Default)]
69pub struct GetWafActiveRuleParams {
70 pub firewall_id: String,
72 pub version_id: i32,
74 pub waf_rule_id: String,
76 pub include: Option<String>
78}
79
80#[derive(Clone, Debug, Default)]
82pub struct ListWafActiveRulesParams {
83 pub firewall_id: String,
85 pub version_id: i32,
87 pub filter_status: Option<String>,
89 pub filter_waf_rule_revision_message: Option<String>,
91 pub filter_waf_rule_revision_modsec_rule_id: Option<String>,
93 pub filter_outdated: Option<String>,
95 pub include: Option<String>,
97 pub page_number: Option<i32>,
99 pub page_size: Option<i32>
101}
102
103#[derive(Clone, Debug, Default)]
105pub struct UpdateWafActiveRuleParams {
106 pub firewall_id: String,
108 pub version_id: i32,
110 pub waf_rule_id: String,
112 pub waf_active_rule: Option<crate::models::WafActiveRule>
113}
114
115
116#[derive(Debug, Clone, Serialize, Deserialize)]
118#[serde(untagged)]
119pub enum BulkDeleteWafActiveRulesError {
120 UnknownValue(serde_json::Value),
121}
122
123#[derive(Debug, Clone, Serialize, Deserialize)]
125#[serde(untagged)]
126pub enum BulkUpdateWafActiveRulesError {
127 UnknownValue(serde_json::Value),
128}
129
130#[derive(Debug, Clone, Serialize, Deserialize)]
132#[serde(untagged)]
133pub enum CreateWafActiveRuleError {
134 UnknownValue(serde_json::Value),
135}
136
137#[derive(Debug, Clone, Serialize, Deserialize)]
139#[serde(untagged)]
140pub enum CreateWafActiveRulesTagError {
141 UnknownValue(serde_json::Value),
142}
143
144#[derive(Debug, Clone, Serialize, Deserialize)]
146#[serde(untagged)]
147pub enum DeleteWafActiveRuleError {
148 UnknownValue(serde_json::Value),
149}
150
151#[derive(Debug, Clone, Serialize, Deserialize)]
153#[serde(untagged)]
154pub enum GetWafActiveRuleError {
155 UnknownValue(serde_json::Value),
156}
157
158#[derive(Debug, Clone, Serialize, Deserialize)]
160#[serde(untagged)]
161pub enum ListWafActiveRulesError {
162 UnknownValue(serde_json::Value),
163}
164
165#[derive(Debug, Clone, Serialize, Deserialize)]
167#[serde(untagged)]
168pub enum UpdateWafActiveRuleError {
169 UnknownValue(serde_json::Value),
170}
171
172
173pub async fn bulk_delete_waf_active_rules(configuration: &mut configuration::Configuration, params: BulkDeleteWafActiveRulesParams) -> Result<(), Error<BulkDeleteWafActiveRulesError>> {
175 let local_var_configuration = configuration;
176
177 let firewall_id = params.firewall_id;
179 let version_id = params.version_id;
180 let request_body = params.request_body;
181
182
183 let local_var_client = &local_var_configuration.client;
184
185 let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/active-rules", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id);
186 let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
187
188 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
189 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
190 }
191 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
192 let local_var_key = local_var_apikey.key.clone();
193 let local_var_value = match local_var_apikey.prefix {
194 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
195 None => local_var_key,
196 };
197 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
198 };
199 local_var_req_builder = local_var_req_builder.json(&request_body);
200
201 let local_var_req = local_var_req_builder.build()?;
202 let local_var_resp = local_var_client.execute(local_var_req).await?;
203
204 if "DELETE" != "GET" && "DELETE" != "HEAD" {
205 let headers = local_var_resp.headers();
206 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
207 Some(v) => v.to_str().unwrap().parse().unwrap(),
208 None => configuration::DEFAULT_RATELIMIT,
209 };
210 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
211 Some(v) => v.to_str().unwrap().parse().unwrap(),
212 None => 0,
213 };
214 }
215
216 let local_var_status = local_var_resp.status();
217 let local_var_content = local_var_resp.text().await?;
218
219 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
220 Ok(())
221 } else {
222 let local_var_entity: Option<BulkDeleteWafActiveRulesError> = serde_json::from_str(&local_var_content).ok();
223 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
224 Err(Error::ResponseError(local_var_error))
225 }
226}
227
228pub async fn bulk_update_waf_active_rules(configuration: &mut configuration::Configuration, params: BulkUpdateWafActiveRulesParams) -> Result<(), Error<BulkUpdateWafActiveRulesError>> {
230 let local_var_configuration = configuration;
231
232 let firewall_id = params.firewall_id;
234 let version_id = params.version_id;
235 let body = params.body;
236
237
238 let local_var_client = &local_var_configuration.client;
239
240 let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/active-rules/bulk", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id);
241 let mut local_var_req_builder = local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str());
242
243 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
244 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
245 }
246 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
247 let local_var_key = local_var_apikey.key.clone();
248 let local_var_value = match local_var_apikey.prefix {
249 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
250 None => local_var_key,
251 };
252 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
253 };
254 local_var_req_builder = local_var_req_builder.json(&body);
255
256 let local_var_req = local_var_req_builder.build()?;
257 let local_var_resp = local_var_client.execute(local_var_req).await?;
258
259 if "PATCH" != "GET" && "PATCH" != "HEAD" {
260 let headers = local_var_resp.headers();
261 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
262 Some(v) => v.to_str().unwrap().parse().unwrap(),
263 None => configuration::DEFAULT_RATELIMIT,
264 };
265 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
266 Some(v) => v.to_str().unwrap().parse().unwrap(),
267 None => 0,
268 };
269 }
270
271 let local_var_status = local_var_resp.status();
272 let local_var_content = local_var_resp.text().await?;
273
274 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
275 Ok(())
276 } else {
277 let local_var_entity: Option<BulkUpdateWafActiveRulesError> = serde_json::from_str(&local_var_content).ok();
278 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
279 Err(Error::ResponseError(local_var_error))
280 }
281}
282
283pub async fn create_waf_active_rule(configuration: &mut configuration::Configuration, params: CreateWafActiveRuleParams) -> Result<crate::models::WafActiveRuleCreationResponse, Error<CreateWafActiveRuleError>> {
285 let local_var_configuration = configuration;
286
287 let firewall_id = params.firewall_id;
289 let version_id = params.version_id;
290 let waf_active_rule = params.waf_active_rule;
291
292
293 let local_var_client = &local_var_configuration.client;
294
295 let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/active-rules", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id);
296 let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
297
298 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
299 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
300 }
301 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
302 let local_var_key = local_var_apikey.key.clone();
303 let local_var_value = match local_var_apikey.prefix {
304 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
305 None => local_var_key,
306 };
307 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
308 };
309 local_var_req_builder = local_var_req_builder.json(&waf_active_rule);
310
311 let local_var_req = local_var_req_builder.build()?;
312 let local_var_resp = local_var_client.execute(local_var_req).await?;
313
314 if "POST" != "GET" && "POST" != "HEAD" {
315 let headers = local_var_resp.headers();
316 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
317 Some(v) => v.to_str().unwrap().parse().unwrap(),
318 None => configuration::DEFAULT_RATELIMIT,
319 };
320 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
321 Some(v) => v.to_str().unwrap().parse().unwrap(),
322 None => 0,
323 };
324 }
325
326 let local_var_status = local_var_resp.status();
327 let local_var_content = local_var_resp.text().await?;
328
329 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
330 serde_json::from_str(&local_var_content).map_err(Error::from)
331 } else {
332 let local_var_entity: Option<CreateWafActiveRuleError> = serde_json::from_str(&local_var_content).ok();
333 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
334 Err(Error::ResponseError(local_var_error))
335 }
336}
337
338pub async fn create_waf_active_rules_tag(configuration: &mut configuration::Configuration, params: CreateWafActiveRulesTagParams) -> Result<(), Error<CreateWafActiveRulesTagError>> {
340 let local_var_configuration = configuration;
341
342 let firewall_id = params.firewall_id;
344 let version_id = params.version_id;
345 let waf_tag_name = params.waf_tag_name;
346 let waf_active_rule = params.waf_active_rule;
347
348
349 let local_var_client = &local_var_configuration.client;
350
351 let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/tags/{waf_tag_name}/active-rules", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id, waf_tag_name=crate::apis::urlencode(waf_tag_name));
352 let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
353
354 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
355 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
356 }
357 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
358 let local_var_key = local_var_apikey.key.clone();
359 let local_var_value = match local_var_apikey.prefix {
360 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
361 None => local_var_key,
362 };
363 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
364 };
365 local_var_req_builder = local_var_req_builder.json(&waf_active_rule);
366
367 let local_var_req = local_var_req_builder.build()?;
368 let local_var_resp = local_var_client.execute(local_var_req).await?;
369
370 if "POST" != "GET" && "POST" != "HEAD" {
371 let headers = local_var_resp.headers();
372 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
373 Some(v) => v.to_str().unwrap().parse().unwrap(),
374 None => configuration::DEFAULT_RATELIMIT,
375 };
376 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
377 Some(v) => v.to_str().unwrap().parse().unwrap(),
378 None => 0,
379 };
380 }
381
382 let local_var_status = local_var_resp.status();
383 let local_var_content = local_var_resp.text().await?;
384
385 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
386 Ok(())
387 } else {
388 let local_var_entity: Option<CreateWafActiveRulesTagError> = serde_json::from_str(&local_var_content).ok();
389 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
390 Err(Error::ResponseError(local_var_error))
391 }
392}
393
394pub async fn delete_waf_active_rule(configuration: &mut configuration::Configuration, params: DeleteWafActiveRuleParams) -> Result<(), Error<DeleteWafActiveRuleError>> {
396 let local_var_configuration = configuration;
397
398 let firewall_id = params.firewall_id;
400 let version_id = params.version_id;
401 let waf_rule_id = params.waf_rule_id;
402
403
404 let local_var_client = &local_var_configuration.client;
405
406 let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/active-rules/{waf_rule_id}", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id, waf_rule_id=crate::apis::urlencode(waf_rule_id));
407 let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
408
409 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
410 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
411 }
412 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
413 let local_var_key = local_var_apikey.key.clone();
414 let local_var_value = match local_var_apikey.prefix {
415 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
416 None => local_var_key,
417 };
418 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
419 };
420
421 let local_var_req = local_var_req_builder.build()?;
422 let local_var_resp = local_var_client.execute(local_var_req).await?;
423
424 if "DELETE" != "GET" && "DELETE" != "HEAD" {
425 let headers = local_var_resp.headers();
426 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
427 Some(v) => v.to_str().unwrap().parse().unwrap(),
428 None => configuration::DEFAULT_RATELIMIT,
429 };
430 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
431 Some(v) => v.to_str().unwrap().parse().unwrap(),
432 None => 0,
433 };
434 }
435
436 let local_var_status = local_var_resp.status();
437 let local_var_content = local_var_resp.text().await?;
438
439 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
440 Ok(())
441 } else {
442 let local_var_entity: Option<DeleteWafActiveRuleError> = serde_json::from_str(&local_var_content).ok();
443 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
444 Err(Error::ResponseError(local_var_error))
445 }
446}
447
448pub async fn get_waf_active_rule(configuration: &mut configuration::Configuration, params: GetWafActiveRuleParams) -> Result<crate::models::WafActiveRuleResponse, Error<GetWafActiveRuleError>> {
450 let local_var_configuration = configuration;
451
452 let firewall_id = params.firewall_id;
454 let version_id = params.version_id;
455 let waf_rule_id = params.waf_rule_id;
456 let include = params.include;
457
458
459 let local_var_client = &local_var_configuration.client;
460
461 let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/active-rules/{waf_rule_id}", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id, waf_rule_id=crate::apis::urlencode(waf_rule_id));
462 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
463
464 if let Some(ref local_var_str) = include {
465 local_var_req_builder = local_var_req_builder.query(&[("include", &local_var_str.to_string())]);
466 }
467 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
468 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
469 }
470 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
471 let local_var_key = local_var_apikey.key.clone();
472 let local_var_value = match local_var_apikey.prefix {
473 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
474 None => local_var_key,
475 };
476 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
477 };
478
479 let local_var_req = local_var_req_builder.build()?;
480 let local_var_resp = local_var_client.execute(local_var_req).await?;
481
482 if "GET" != "GET" && "GET" != "HEAD" {
483 let headers = local_var_resp.headers();
484 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
485 Some(v) => v.to_str().unwrap().parse().unwrap(),
486 None => configuration::DEFAULT_RATELIMIT,
487 };
488 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
489 Some(v) => v.to_str().unwrap().parse().unwrap(),
490 None => 0,
491 };
492 }
493
494 let local_var_status = local_var_resp.status();
495 let local_var_content = local_var_resp.text().await?;
496
497 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
498 serde_json::from_str(&local_var_content).map_err(Error::from)
499 } else {
500 let local_var_entity: Option<GetWafActiveRuleError> = serde_json::from_str(&local_var_content).ok();
501 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
502 Err(Error::ResponseError(local_var_error))
503 }
504}
505
506pub async fn list_waf_active_rules(configuration: &mut configuration::Configuration, params: ListWafActiveRulesParams) -> Result<crate::models::WafActiveRulesResponse, Error<ListWafActiveRulesError>> {
508 let local_var_configuration = configuration;
509
510 let firewall_id = params.firewall_id;
512 let version_id = params.version_id;
513 let filter_status = params.filter_status;
514 let filter_waf_rule_revision_message = params.filter_waf_rule_revision_message;
515 let filter_waf_rule_revision_modsec_rule_id = params.filter_waf_rule_revision_modsec_rule_id;
516 let filter_outdated = params.filter_outdated;
517 let include = params.include;
518 let page_number = params.page_number;
519 let page_size = params.page_size;
520
521
522 let local_var_client = &local_var_configuration.client;
523
524 let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/active-rules", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id);
525 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
526
527 if let Some(ref local_var_str) = filter_status {
528 local_var_req_builder = local_var_req_builder.query(&[("filter[status]", &local_var_str.to_string())]);
529 }
530 if let Some(ref local_var_str) = filter_waf_rule_revision_message {
531 local_var_req_builder = local_var_req_builder.query(&[("filter[waf_rule_revision][message]", &local_var_str.to_string())]);
532 }
533 if let Some(ref local_var_str) = filter_waf_rule_revision_modsec_rule_id {
534 local_var_req_builder = local_var_req_builder.query(&[("filter[waf_rule_revision][modsec_rule_id]", &local_var_str.to_string())]);
535 }
536 if let Some(ref local_var_str) = filter_outdated {
537 local_var_req_builder = local_var_req_builder.query(&[("filter[outdated]", &local_var_str.to_string())]);
538 }
539 if let Some(ref local_var_str) = include {
540 local_var_req_builder = local_var_req_builder.query(&[("include", &local_var_str.to_string())]);
541 }
542 if let Some(ref local_var_str) = page_number {
543 local_var_req_builder = local_var_req_builder.query(&[("page[number]", &local_var_str.to_string())]);
544 }
545 if let Some(ref local_var_str) = page_size {
546 local_var_req_builder = local_var_req_builder.query(&[("page[size]", &local_var_str.to_string())]);
547 }
548 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
549 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
550 }
551 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
552 let local_var_key = local_var_apikey.key.clone();
553 let local_var_value = match local_var_apikey.prefix {
554 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
555 None => local_var_key,
556 };
557 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
558 };
559
560 let local_var_req = local_var_req_builder.build()?;
561 let local_var_resp = local_var_client.execute(local_var_req).await?;
562
563 if "GET" != "GET" && "GET" != "HEAD" {
564 let headers = local_var_resp.headers();
565 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
566 Some(v) => v.to_str().unwrap().parse().unwrap(),
567 None => configuration::DEFAULT_RATELIMIT,
568 };
569 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
570 Some(v) => v.to_str().unwrap().parse().unwrap(),
571 None => 0,
572 };
573 }
574
575 let local_var_status = local_var_resp.status();
576 let local_var_content = local_var_resp.text().await?;
577
578 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
579 serde_json::from_str(&local_var_content).map_err(Error::from)
580 } else {
581 let local_var_entity: Option<ListWafActiveRulesError> = serde_json::from_str(&local_var_content).ok();
582 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
583 Err(Error::ResponseError(local_var_error))
584 }
585}
586
587pub async fn update_waf_active_rule(configuration: &mut configuration::Configuration, params: UpdateWafActiveRuleParams) -> Result<crate::models::WafActiveRuleResponse, Error<UpdateWafActiveRuleError>> {
589 let local_var_configuration = configuration;
590
591 let firewall_id = params.firewall_id;
593 let version_id = params.version_id;
594 let waf_rule_id = params.waf_rule_id;
595 let waf_active_rule = params.waf_active_rule;
596
597
598 let local_var_client = &local_var_configuration.client;
599
600 let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/active-rules/{waf_rule_id}", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id, waf_rule_id=crate::apis::urlencode(waf_rule_id));
601 let mut local_var_req_builder = local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str());
602
603 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
604 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
605 }
606 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
607 let local_var_key = local_var_apikey.key.clone();
608 let local_var_value = match local_var_apikey.prefix {
609 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
610 None => local_var_key,
611 };
612 local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
613 };
614 local_var_req_builder = local_var_req_builder.json(&waf_active_rule);
615
616 let local_var_req = local_var_req_builder.build()?;
617 let local_var_resp = local_var_client.execute(local_var_req).await?;
618
619 if "PATCH" != "GET" && "PATCH" != "HEAD" {
620 let headers = local_var_resp.headers();
621 local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
622 Some(v) => v.to_str().unwrap().parse().unwrap(),
623 None => configuration::DEFAULT_RATELIMIT,
624 };
625 local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
626 Some(v) => v.to_str().unwrap().parse().unwrap(),
627 None => 0,
628 };
629 }
630
631 let local_var_status = local_var_resp.status();
632 let local_var_content = local_var_resp.text().await?;
633
634 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
635 serde_json::from_str(&local_var_content).map_err(Error::from)
636 } else {
637 let local_var_entity: Option<UpdateWafActiveRuleError> = serde_json::from_str(&local_var_content).ok();
638 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
639 Err(Error::ResponseError(local_var_error))
640 }
641}
642