1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, Serialize, Deserialize, Default)]
8#[serde(rename_all = "camelCase")]
9pub struct HttpResponse {
10 #[serde(skip_serializing_if = "Option::is_none")]
12 pub headers: Option<HashMap<String, String>>,
13 #[serde(skip_serializing_if = "Option::is_none")]
15 pub body: Option<String>,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize, Default)]
20#[serde(rename_all = "camelCase")]
21pub struct HttpRetryOptions {
22 #[serde(skip_serializing_if = "Option::is_none")]
25 pub attempts: Option<u32>,
26 #[serde(skip_serializing_if = "Option::is_none")]
28 pub initial_delay: Option<f64>,
29 #[serde(skip_serializing_if = "Option::is_none")]
31 pub max_delay: Option<f64>,
32 #[serde(skip_serializing_if = "Option::is_none")]
34 pub exp_base: Option<f64>,
35 #[serde(skip_serializing_if = "Option::is_none")]
37 pub jitter: Option<f64>,
38 #[serde(skip_serializing_if = "Option::is_none")]
42 pub http_status_codes: Option<Vec<u16>>,
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize, Default)]
47#[serde(rename_all = "camelCase")]
48pub struct HttpOptions {
49 #[serde(skip_serializing_if = "Option::is_none")]
50 pub base_url: Option<String>,
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub api_version: Option<String>,
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub headers: Option<HashMap<String, String>>,
55 #[serde(skip_serializing_if = "Option::is_none")]
57 pub timeout: Option<u64>,
58 #[serde(skip_serializing_if = "Option::is_none")]
60 pub extra_body: Option<serde_json::Value>,
61 #[serde(skip_serializing_if = "Option::is_none")]
63 pub retry_options: Option<HttpRetryOptions>,
64}