use serde::{Deserialize, Serialize};
use std::collections::HashMap;
fn default_base_url() -> String {
"http://localhost".to_string()
}
fn default_timeout_ms() -> u64 {
5000
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct CallSpec {
pub url: String,
pub method: String,
#[serde(default)]
pub body: String,
#[serde(default)]
pub headers: HashMap<String, String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct QueryConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub added: Option<CallSpec>,
#[serde(skip_serializing_if = "Option::is_none")]
pub updated: Option<CallSpec>,
#[serde(skip_serializing_if = "Option::is_none")]
pub deleted: Option<CallSpec>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct HttpReactionConfig {
#[serde(default = "default_base_url")]
pub base_url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub token: Option<String>,
#[serde(default = "default_timeout_ms")]
pub timeout_ms: u64,
#[serde(default)]
pub routes: HashMap<String, QueryConfig>,
}
impl Default for HttpReactionConfig {
fn default() -> Self {
Self {
base_url: default_base_url(),
token: None,
timeout_ms: default_timeout_ms(),
routes: HashMap::new(),
}
}
}