1use crate::datadog;
5use async_stream::try_stream;
6use flate2::{
7 write::{GzEncoder, ZlibEncoder},
8 Compression,
9};
10use futures_core::stream::Stream;
11use reqwest::header::{HeaderMap, HeaderValue};
12use serde::{Deserialize, Serialize};
13use std::io::Write;
14
15#[non_exhaustive]
17#[derive(Clone, Default, Debug)]
18pub struct ListPowerpacksOptionalParams {
19 pub page_limit: Option<i64>,
21 pub page_offset: Option<i64>,
23}
24
25impl ListPowerpacksOptionalParams {
26 pub fn page_limit(mut self, value: i64) -> Self {
28 self.page_limit = Some(value);
29 self
30 }
31 pub fn page_offset(mut self, value: i64) -> Self {
33 self.page_offset = Some(value);
34 self
35 }
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
40#[serde(untagged)]
41pub enum CreatePowerpackError {
42 APIErrorResponse(crate::datadogV2::model::APIErrorResponse),
43 UnknownValue(serde_json::Value),
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
48#[serde(untagged)]
49pub enum DeletePowerpackError {
50 APIErrorResponse(crate::datadogV2::model::APIErrorResponse),
51 UnknownValue(serde_json::Value),
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
56#[serde(untagged)]
57pub enum GetPowerpackError {
58 APIErrorResponse(crate::datadogV2::model::APIErrorResponse),
59 UnknownValue(serde_json::Value),
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize)]
64#[serde(untagged)]
65pub enum ListPowerpacksError {
66 APIErrorResponse(crate::datadogV2::model::APIErrorResponse),
67 UnknownValue(serde_json::Value),
68}
69
70#[derive(Debug, Clone, Serialize, Deserialize)]
72#[serde(untagged)]
73pub enum UpdatePowerpackError {
74 APIErrorResponse(crate::datadogV2::model::APIErrorResponse),
75 UnknownValue(serde_json::Value),
76}
77
78#[derive(Debug, Clone)]
90pub struct PowerpackAPI {
91 config: datadog::Configuration,
92 client: reqwest_middleware::ClientWithMiddleware,
93}
94
95impl Default for PowerpackAPI {
96 fn default() -> Self {
97 Self::with_config(datadog::Configuration::default())
98 }
99}
100
101impl PowerpackAPI {
102 pub fn new() -> Self {
103 Self::default()
104 }
105 pub fn with_config(config: datadog::Configuration) -> Self {
106 let mut reqwest_client_builder = reqwest::Client::builder();
107
108 if let Some(proxy_url) = &config.proxy_url {
109 let proxy = reqwest::Proxy::all(proxy_url).expect("Failed to parse proxy URL");
110 reqwest_client_builder = reqwest_client_builder.proxy(proxy);
111 }
112
113 let mut middleware_client_builder =
114 reqwest_middleware::ClientBuilder::new(reqwest_client_builder.build().unwrap());
115
116 if config.enable_retry {
117 struct RetryableStatus;
118 impl reqwest_retry::RetryableStrategy for RetryableStatus {
119 fn handle(
120 &self,
121 res: &Result<reqwest::Response, reqwest_middleware::Error>,
122 ) -> Option<reqwest_retry::Retryable> {
123 match res {
124 Ok(success) => reqwest_retry::default_on_request_success(success),
125 Err(_) => None,
126 }
127 }
128 }
129 let backoff_policy = reqwest_retry::policies::ExponentialBackoff::builder()
130 .build_with_max_retries(config.max_retries);
131
132 let retry_middleware =
133 reqwest_retry::RetryTransientMiddleware::new_with_policy_and_strategy(
134 backoff_policy,
135 RetryableStatus,
136 );
137
138 middleware_client_builder = middleware_client_builder.with(retry_middleware);
139 }
140
141 let client = middleware_client_builder.build();
142
143 Self { config, client }
144 }
145
146 pub fn with_client_and_config(
147 config: datadog::Configuration,
148 client: reqwest_middleware::ClientWithMiddleware,
149 ) -> Self {
150 Self { config, client }
151 }
152
153 pub async fn create_powerpack(
155 &self,
156 body: crate::datadogV2::model::Powerpack,
157 ) -> Result<crate::datadogV2::model::PowerpackResponse, datadog::Error<CreatePowerpackError>>
158 {
159 match self.create_powerpack_with_http_info(body).await {
160 Ok(response_content) => {
161 if let Some(e) = response_content.entity {
162 Ok(e)
163 } else {
164 Err(datadog::Error::Serde(serde::de::Error::custom(
165 "response content was None",
166 )))
167 }
168 }
169 Err(err) => Err(err),
170 }
171 }
172
173 pub async fn create_powerpack_with_http_info(
175 &self,
176 body: crate::datadogV2::model::Powerpack,
177 ) -> Result<
178 datadog::ResponseContent<crate::datadogV2::model::PowerpackResponse>,
179 datadog::Error<CreatePowerpackError>,
180 > {
181 let local_configuration = &self.config;
182 let operation_id = "v2.create_powerpack";
183
184 let local_client = &self.client;
185
186 let local_uri_str = format!(
187 "{}/api/v2/powerpacks",
188 local_configuration.get_operation_host(operation_id)
189 );
190 let mut local_req_builder =
191 local_client.request(reqwest::Method::POST, local_uri_str.as_str());
192
193 let mut headers = HeaderMap::new();
195 headers.insert("Content-Type", HeaderValue::from_static("application/json"));
196 headers.insert("Accept", HeaderValue::from_static("application/json"));
197
198 match HeaderValue::from_str(local_configuration.user_agent.as_str()) {
200 Ok(user_agent) => headers.insert(reqwest::header::USER_AGENT, user_agent),
201 Err(e) => {
202 log::warn!("Failed to parse user agent header: {e}, falling back to default");
203 headers.insert(
204 reqwest::header::USER_AGENT,
205 HeaderValue::from_static(datadog::DEFAULT_USER_AGENT.as_str()),
206 )
207 }
208 };
209
210 if let Some(local_key) = local_configuration.auth_keys.get("apiKeyAuth") {
212 headers.insert(
213 "DD-API-KEY",
214 HeaderValue::from_str(local_key.key.as_str())
215 .expect("failed to parse DD-API-KEY header"),
216 );
217 };
218 if let Some(local_key) = local_configuration.auth_keys.get("appKeyAuth") {
219 headers.insert(
220 "DD-APPLICATION-KEY",
221 HeaderValue::from_str(local_key.key.as_str())
222 .expect("failed to parse DD-APPLICATION-KEY header"),
223 );
224 };
225
226 let output = Vec::new();
228 let mut ser = serde_json::Serializer::with_formatter(output, datadog::DDFormatter);
229 if body.serialize(&mut ser).is_ok() {
230 if let Some(content_encoding) = headers.get("Content-Encoding") {
231 match content_encoding.to_str().unwrap_or_default() {
232 "gzip" => {
233 let mut enc = GzEncoder::new(Vec::new(), Compression::default());
234 let _ = enc.write_all(ser.into_inner().as_slice());
235 match enc.finish() {
236 Ok(buf) => {
237 local_req_builder = local_req_builder.body(buf);
238 }
239 Err(e) => return Err(datadog::Error::Io(e)),
240 }
241 }
242 "deflate" => {
243 let mut enc = ZlibEncoder::new(Vec::new(), Compression::default());
244 let _ = enc.write_all(ser.into_inner().as_slice());
245 match enc.finish() {
246 Ok(buf) => {
247 local_req_builder = local_req_builder.body(buf);
248 }
249 Err(e) => return Err(datadog::Error::Io(e)),
250 }
251 }
252 "zstd1" => {
253 let mut enc = zstd::stream::Encoder::new(Vec::new(), 0).unwrap();
254 let _ = enc.write_all(ser.into_inner().as_slice());
255 match enc.finish() {
256 Ok(buf) => {
257 local_req_builder = local_req_builder.body(buf);
258 }
259 Err(e) => return Err(datadog::Error::Io(e)),
260 }
261 }
262 _ => {
263 local_req_builder = local_req_builder.body(ser.into_inner());
264 }
265 }
266 } else {
267 local_req_builder = local_req_builder.body(ser.into_inner());
268 }
269 }
270
271 local_req_builder = local_req_builder.headers(headers);
272 let local_req = local_req_builder.build()?;
273 log::debug!("request content: {:?}", local_req.body());
274 let local_resp = local_client.execute(local_req).await?;
275
276 let local_status = local_resp.status();
277 let local_content = local_resp.text().await?;
278 log::debug!("response content: {}", local_content);
279
280 if !local_status.is_client_error() && !local_status.is_server_error() {
281 match serde_json::from_str::<crate::datadogV2::model::PowerpackResponse>(&local_content)
282 {
283 Ok(e) => {
284 return Ok(datadog::ResponseContent {
285 status: local_status,
286 content: local_content,
287 entity: Some(e),
288 })
289 }
290 Err(e) => return Err(datadog::Error::Serde(e)),
291 };
292 } else {
293 let local_entity: Option<CreatePowerpackError> =
294 serde_json::from_str(&local_content).ok();
295 let local_error = datadog::ResponseContent {
296 status: local_status,
297 content: local_content,
298 entity: local_entity,
299 };
300 Err(datadog::Error::ResponseError(local_error))
301 }
302 }
303
304 pub async fn delete_powerpack(
306 &self,
307 powerpack_id: String,
308 ) -> Result<(), datadog::Error<DeletePowerpackError>> {
309 match self.delete_powerpack_with_http_info(powerpack_id).await {
310 Ok(_) => Ok(()),
311 Err(err) => Err(err),
312 }
313 }
314
315 pub async fn delete_powerpack_with_http_info(
317 &self,
318 powerpack_id: String,
319 ) -> Result<datadog::ResponseContent<()>, datadog::Error<DeletePowerpackError>> {
320 let local_configuration = &self.config;
321 let operation_id = "v2.delete_powerpack";
322
323 let local_client = &self.client;
324
325 let local_uri_str = format!(
326 "{}/api/v2/powerpacks/{powerpack_id}",
327 local_configuration.get_operation_host(operation_id),
328 powerpack_id = datadog::urlencode(powerpack_id)
329 );
330 let mut local_req_builder =
331 local_client.request(reqwest::Method::DELETE, local_uri_str.as_str());
332
333 let mut headers = HeaderMap::new();
335 headers.insert("Accept", HeaderValue::from_static("*/*"));
336
337 match HeaderValue::from_str(local_configuration.user_agent.as_str()) {
339 Ok(user_agent) => headers.insert(reqwest::header::USER_AGENT, user_agent),
340 Err(e) => {
341 log::warn!("Failed to parse user agent header: {e}, falling back to default");
342 headers.insert(
343 reqwest::header::USER_AGENT,
344 HeaderValue::from_static(datadog::DEFAULT_USER_AGENT.as_str()),
345 )
346 }
347 };
348
349 if let Some(local_key) = local_configuration.auth_keys.get("apiKeyAuth") {
351 headers.insert(
352 "DD-API-KEY",
353 HeaderValue::from_str(local_key.key.as_str())
354 .expect("failed to parse DD-API-KEY header"),
355 );
356 };
357 if let Some(local_key) = local_configuration.auth_keys.get("appKeyAuth") {
358 headers.insert(
359 "DD-APPLICATION-KEY",
360 HeaderValue::from_str(local_key.key.as_str())
361 .expect("failed to parse DD-APPLICATION-KEY header"),
362 );
363 };
364
365 local_req_builder = local_req_builder.headers(headers);
366 let local_req = local_req_builder.build()?;
367 log::debug!("request content: {:?}", local_req.body());
368 let local_resp = local_client.execute(local_req).await?;
369
370 let local_status = local_resp.status();
371 let local_content = local_resp.text().await?;
372 log::debug!("response content: {}", local_content);
373
374 if !local_status.is_client_error() && !local_status.is_server_error() {
375 Ok(datadog::ResponseContent {
376 status: local_status,
377 content: local_content,
378 entity: None,
379 })
380 } else {
381 let local_entity: Option<DeletePowerpackError> =
382 serde_json::from_str(&local_content).ok();
383 let local_error = datadog::ResponseContent {
384 status: local_status,
385 content: local_content,
386 entity: local_entity,
387 };
388 Err(datadog::Error::ResponseError(local_error))
389 }
390 }
391
392 pub async fn get_powerpack(
394 &self,
395 powerpack_id: String,
396 ) -> Result<crate::datadogV2::model::PowerpackResponse, datadog::Error<GetPowerpackError>> {
397 match self.get_powerpack_with_http_info(powerpack_id).await {
398 Ok(response_content) => {
399 if let Some(e) = response_content.entity {
400 Ok(e)
401 } else {
402 Err(datadog::Error::Serde(serde::de::Error::custom(
403 "response content was None",
404 )))
405 }
406 }
407 Err(err) => Err(err),
408 }
409 }
410
411 pub async fn get_powerpack_with_http_info(
413 &self,
414 powerpack_id: String,
415 ) -> Result<
416 datadog::ResponseContent<crate::datadogV2::model::PowerpackResponse>,
417 datadog::Error<GetPowerpackError>,
418 > {
419 let local_configuration = &self.config;
420 let operation_id = "v2.get_powerpack";
421
422 let local_client = &self.client;
423
424 let local_uri_str = format!(
425 "{}/api/v2/powerpacks/{powerpack_id}",
426 local_configuration.get_operation_host(operation_id),
427 powerpack_id = datadog::urlencode(powerpack_id)
428 );
429 let mut local_req_builder =
430 local_client.request(reqwest::Method::GET, local_uri_str.as_str());
431
432 let mut headers = HeaderMap::new();
434 headers.insert("Accept", HeaderValue::from_static("application/json"));
435
436 match HeaderValue::from_str(local_configuration.user_agent.as_str()) {
438 Ok(user_agent) => headers.insert(reqwest::header::USER_AGENT, user_agent),
439 Err(e) => {
440 log::warn!("Failed to parse user agent header: {e}, falling back to default");
441 headers.insert(
442 reqwest::header::USER_AGENT,
443 HeaderValue::from_static(datadog::DEFAULT_USER_AGENT.as_str()),
444 )
445 }
446 };
447
448 if let Some(local_key) = local_configuration.auth_keys.get("apiKeyAuth") {
450 headers.insert(
451 "DD-API-KEY",
452 HeaderValue::from_str(local_key.key.as_str())
453 .expect("failed to parse DD-API-KEY header"),
454 );
455 };
456 if let Some(local_key) = local_configuration.auth_keys.get("appKeyAuth") {
457 headers.insert(
458 "DD-APPLICATION-KEY",
459 HeaderValue::from_str(local_key.key.as_str())
460 .expect("failed to parse DD-APPLICATION-KEY header"),
461 );
462 };
463
464 local_req_builder = local_req_builder.headers(headers);
465 let local_req = local_req_builder.build()?;
466 log::debug!("request content: {:?}", local_req.body());
467 let local_resp = local_client.execute(local_req).await?;
468
469 let local_status = local_resp.status();
470 let local_content = local_resp.text().await?;
471 log::debug!("response content: {}", local_content);
472
473 if !local_status.is_client_error() && !local_status.is_server_error() {
474 match serde_json::from_str::<crate::datadogV2::model::PowerpackResponse>(&local_content)
475 {
476 Ok(e) => {
477 return Ok(datadog::ResponseContent {
478 status: local_status,
479 content: local_content,
480 entity: Some(e),
481 })
482 }
483 Err(e) => return Err(datadog::Error::Serde(e)),
484 };
485 } else {
486 let local_entity: Option<GetPowerpackError> = serde_json::from_str(&local_content).ok();
487 let local_error = datadog::ResponseContent {
488 status: local_status,
489 content: local_content,
490 entity: local_entity,
491 };
492 Err(datadog::Error::ResponseError(local_error))
493 }
494 }
495
496 pub async fn list_powerpacks(
498 &self,
499 params: ListPowerpacksOptionalParams,
500 ) -> Result<crate::datadogV2::model::ListPowerpacksResponse, datadog::Error<ListPowerpacksError>>
501 {
502 match self.list_powerpacks_with_http_info(params).await {
503 Ok(response_content) => {
504 if let Some(e) = response_content.entity {
505 Ok(e)
506 } else {
507 Err(datadog::Error::Serde(serde::de::Error::custom(
508 "response content was None",
509 )))
510 }
511 }
512 Err(err) => Err(err),
513 }
514 }
515
516 pub fn list_powerpacks_with_pagination(
517 &self,
518 mut params: ListPowerpacksOptionalParams,
519 ) -> impl Stream<
520 Item = Result<crate::datadogV2::model::PowerpackData, datadog::Error<ListPowerpacksError>>,
521 > + '_ {
522 try_stream! {
523 let mut page_size: i64 = 25;
524 if params.page_limit.is_none() {
525 params.page_limit = Some(page_size);
526 } else {
527 page_size = params.page_limit.unwrap().clone();
528 }
529 loop {
530 let resp = self.list_powerpacks(params.clone()).await?;
531 let Some(data) = resp.data else { break };
532
533 let r = data;
534 let count = r.len();
535 for team in r {
536 yield team;
537 }
538
539 if count < page_size as usize {
540 break;
541 }
542 if params.page_offset.is_none() {
543 params.page_offset = Some(page_size.clone());
544 } else {
545 params.page_offset = Some(params.page_offset.unwrap() + page_size.clone());
546 }
547 }
548 }
549 }
550
551 pub async fn list_powerpacks_with_http_info(
553 &self,
554 params: ListPowerpacksOptionalParams,
555 ) -> Result<
556 datadog::ResponseContent<crate::datadogV2::model::ListPowerpacksResponse>,
557 datadog::Error<ListPowerpacksError>,
558 > {
559 let local_configuration = &self.config;
560 let operation_id = "v2.list_powerpacks";
561
562 let page_limit = params.page_limit;
564 let page_offset = params.page_offset;
565
566 let local_client = &self.client;
567
568 let local_uri_str = format!(
569 "{}/api/v2/powerpacks",
570 local_configuration.get_operation_host(operation_id)
571 );
572 let mut local_req_builder =
573 local_client.request(reqwest::Method::GET, local_uri_str.as_str());
574
575 if let Some(ref local_query_param) = page_limit {
576 local_req_builder =
577 local_req_builder.query(&[("page[limit]", &local_query_param.to_string())]);
578 };
579 if let Some(ref local_query_param) = page_offset {
580 local_req_builder =
581 local_req_builder.query(&[("page[offset]", &local_query_param.to_string())]);
582 };
583
584 let mut headers = HeaderMap::new();
586 headers.insert("Accept", HeaderValue::from_static("application/json"));
587
588 match HeaderValue::from_str(local_configuration.user_agent.as_str()) {
590 Ok(user_agent) => headers.insert(reqwest::header::USER_AGENT, user_agent),
591 Err(e) => {
592 log::warn!("Failed to parse user agent header: {e}, falling back to default");
593 headers.insert(
594 reqwest::header::USER_AGENT,
595 HeaderValue::from_static(datadog::DEFAULT_USER_AGENT.as_str()),
596 )
597 }
598 };
599
600 if let Some(local_key) = local_configuration.auth_keys.get("apiKeyAuth") {
602 headers.insert(
603 "DD-API-KEY",
604 HeaderValue::from_str(local_key.key.as_str())
605 .expect("failed to parse DD-API-KEY header"),
606 );
607 };
608 if let Some(local_key) = local_configuration.auth_keys.get("appKeyAuth") {
609 headers.insert(
610 "DD-APPLICATION-KEY",
611 HeaderValue::from_str(local_key.key.as_str())
612 .expect("failed to parse DD-APPLICATION-KEY header"),
613 );
614 };
615
616 local_req_builder = local_req_builder.headers(headers);
617 let local_req = local_req_builder.build()?;
618 log::debug!("request content: {:?}", local_req.body());
619 let local_resp = local_client.execute(local_req).await?;
620
621 let local_status = local_resp.status();
622 let local_content = local_resp.text().await?;
623 log::debug!("response content: {}", local_content);
624
625 if !local_status.is_client_error() && !local_status.is_server_error() {
626 match serde_json::from_str::<crate::datadogV2::model::ListPowerpacksResponse>(
627 &local_content,
628 ) {
629 Ok(e) => {
630 return Ok(datadog::ResponseContent {
631 status: local_status,
632 content: local_content,
633 entity: Some(e),
634 })
635 }
636 Err(e) => return Err(datadog::Error::Serde(e)),
637 };
638 } else {
639 let local_entity: Option<ListPowerpacksError> =
640 serde_json::from_str(&local_content).ok();
641 let local_error = datadog::ResponseContent {
642 status: local_status,
643 content: local_content,
644 entity: local_entity,
645 };
646 Err(datadog::Error::ResponseError(local_error))
647 }
648 }
649
650 pub async fn update_powerpack(
652 &self,
653 powerpack_id: String,
654 body: crate::datadogV2::model::Powerpack,
655 ) -> Result<crate::datadogV2::model::PowerpackResponse, datadog::Error<UpdatePowerpackError>>
656 {
657 match self
658 .update_powerpack_with_http_info(powerpack_id, body)
659 .await
660 {
661 Ok(response_content) => {
662 if let Some(e) = response_content.entity {
663 Ok(e)
664 } else {
665 Err(datadog::Error::Serde(serde::de::Error::custom(
666 "response content was None",
667 )))
668 }
669 }
670 Err(err) => Err(err),
671 }
672 }
673
674 pub async fn update_powerpack_with_http_info(
676 &self,
677 powerpack_id: String,
678 body: crate::datadogV2::model::Powerpack,
679 ) -> Result<
680 datadog::ResponseContent<crate::datadogV2::model::PowerpackResponse>,
681 datadog::Error<UpdatePowerpackError>,
682 > {
683 let local_configuration = &self.config;
684 let operation_id = "v2.update_powerpack";
685
686 let local_client = &self.client;
687
688 let local_uri_str = format!(
689 "{}/api/v2/powerpacks/{powerpack_id}",
690 local_configuration.get_operation_host(operation_id),
691 powerpack_id = datadog::urlencode(powerpack_id)
692 );
693 let mut local_req_builder =
694 local_client.request(reqwest::Method::PATCH, local_uri_str.as_str());
695
696 let mut headers = HeaderMap::new();
698 headers.insert("Content-Type", HeaderValue::from_static("application/json"));
699 headers.insert("Accept", HeaderValue::from_static("application/json"));
700
701 match HeaderValue::from_str(local_configuration.user_agent.as_str()) {
703 Ok(user_agent) => headers.insert(reqwest::header::USER_AGENT, user_agent),
704 Err(e) => {
705 log::warn!("Failed to parse user agent header: {e}, falling back to default");
706 headers.insert(
707 reqwest::header::USER_AGENT,
708 HeaderValue::from_static(datadog::DEFAULT_USER_AGENT.as_str()),
709 )
710 }
711 };
712
713 if let Some(local_key) = local_configuration.auth_keys.get("apiKeyAuth") {
715 headers.insert(
716 "DD-API-KEY",
717 HeaderValue::from_str(local_key.key.as_str())
718 .expect("failed to parse DD-API-KEY header"),
719 );
720 };
721 if let Some(local_key) = local_configuration.auth_keys.get("appKeyAuth") {
722 headers.insert(
723 "DD-APPLICATION-KEY",
724 HeaderValue::from_str(local_key.key.as_str())
725 .expect("failed to parse DD-APPLICATION-KEY header"),
726 );
727 };
728
729 let output = Vec::new();
731 let mut ser = serde_json::Serializer::with_formatter(output, datadog::DDFormatter);
732 if body.serialize(&mut ser).is_ok() {
733 if let Some(content_encoding) = headers.get("Content-Encoding") {
734 match content_encoding.to_str().unwrap_or_default() {
735 "gzip" => {
736 let mut enc = GzEncoder::new(Vec::new(), Compression::default());
737 let _ = enc.write_all(ser.into_inner().as_slice());
738 match enc.finish() {
739 Ok(buf) => {
740 local_req_builder = local_req_builder.body(buf);
741 }
742 Err(e) => return Err(datadog::Error::Io(e)),
743 }
744 }
745 "deflate" => {
746 let mut enc = ZlibEncoder::new(Vec::new(), Compression::default());
747 let _ = enc.write_all(ser.into_inner().as_slice());
748 match enc.finish() {
749 Ok(buf) => {
750 local_req_builder = local_req_builder.body(buf);
751 }
752 Err(e) => return Err(datadog::Error::Io(e)),
753 }
754 }
755 "zstd1" => {
756 let mut enc = zstd::stream::Encoder::new(Vec::new(), 0).unwrap();
757 let _ = enc.write_all(ser.into_inner().as_slice());
758 match enc.finish() {
759 Ok(buf) => {
760 local_req_builder = local_req_builder.body(buf);
761 }
762 Err(e) => return Err(datadog::Error::Io(e)),
763 }
764 }
765 _ => {
766 local_req_builder = local_req_builder.body(ser.into_inner());
767 }
768 }
769 } else {
770 local_req_builder = local_req_builder.body(ser.into_inner());
771 }
772 }
773
774 local_req_builder = local_req_builder.headers(headers);
775 let local_req = local_req_builder.build()?;
776 log::debug!("request content: {:?}", local_req.body());
777 let local_resp = local_client.execute(local_req).await?;
778
779 let local_status = local_resp.status();
780 let local_content = local_resp.text().await?;
781 log::debug!("response content: {}", local_content);
782
783 if !local_status.is_client_error() && !local_status.is_server_error() {
784 match serde_json::from_str::<crate::datadogV2::model::PowerpackResponse>(&local_content)
785 {
786 Ok(e) => {
787 return Ok(datadog::ResponseContent {
788 status: local_status,
789 content: local_content,
790 entity: Some(e),
791 })
792 }
793 Err(e) => return Err(datadog::Error::Serde(e)),
794 };
795 } else {
796 let local_entity: Option<UpdatePowerpackError> =
797 serde_json::from_str(&local_content).ok();
798 let local_error = datadog::ResponseContent {
799 status: local_status,
800 content: local_content,
801 entity: local_entity,
802 };
803 Err(datadog::Error::ResponseError(local_error))
804 }
805 }
806}