use serde::Deserialize;
use serde_json::Value;
use std::collections::HashMap;
#[derive(Debug, Clone, Deserialize)]
pub struct HttpCallConfig {
pub connector: String,
#[serde(default = "default_method")]
pub method: HttpMethod,
#[serde(default)]
pub path: Option<String>,
#[serde(default)]
pub path_logic: Option<Value>,
#[serde(skip)]
pub path_logic_index: Option<usize>,
#[serde(default)]
pub headers: HashMap<String, String>,
#[serde(default)]
pub body: Option<Value>,
#[serde(default)]
pub body_logic: Option<Value>,
#[serde(skip)]
pub body_logic_index: Option<usize>,
#[serde(default)]
pub response_path: Option<String>,
#[serde(default = "default_timeout")]
pub timeout_ms: u64,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum HttpMethod {
#[default]
Get,
Post,
Put,
Patch,
Delete,
}
fn default_method() -> HttpMethod {
HttpMethod::Get
}
fn default_timeout() -> u64 {
30000
}
#[derive(Debug, Clone, Deserialize)]
pub struct EnrichConfig {
pub connector: String,
#[serde(default = "default_method")]
pub method: HttpMethod,
#[serde(default)]
pub path: Option<String>,
#[serde(default)]
pub path_logic: Option<Value>,
#[serde(skip)]
pub path_logic_index: Option<usize>,
pub merge_path: String,
#[serde(default = "default_timeout")]
pub timeout_ms: u64,
#[serde(default)]
pub on_error: EnrichErrorAction,
}
#[derive(Debug, Clone, Deserialize, Default)]
#[serde(rename_all = "lowercase")]
pub enum EnrichErrorAction {
#[default]
Fail,
Skip,
}
#[derive(Debug, Clone, Deserialize)]
pub struct PublishKafkaConfig {
pub connector: String,
pub topic: String,
#[serde(default)]
pub key_logic: Option<Value>,
#[serde(skip)]
pub key_logic_index: Option<usize>,
#[serde(default)]
pub value_logic: Option<Value>,
#[serde(skip)]
pub value_logic_index: Option<usize>,
}