use crate::recording::ProxyMode;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RecordingConfig {
#[serde(default)]
pub mode: ProxyMode,
#[serde(default)]
pub add_wait_behavior: bool,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub predicate_generators: Vec<PredicateGenerator>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub persistence: Option<RecordingPersistence>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PredicateGenerator {
#[serde(default)]
pub matches: PredicateGeneratorMatches,
}
#[derive(Debug, Clone, Deserialize, Serialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct PredicateGeneratorMatches {
#[serde(default)]
pub method: bool,
#[serde(default)]
pub path: bool,
#[serde(default)]
pub query: bool,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub headers: Vec<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct RecordingPersistence {
#[serde(default = "default_persistence_type")]
pub backend: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub redis_url: Option<String>,
}
fn default_persistence_type() -> String {
"file".to_string()
}