Skip to main content

xdiff_live/config/
xreq.rs

1use std::{fmt::Debug, collections::HashMap};
2use serde::{Serialize, Deserialize};
3use crate::RequestProfile;
4use anyhow::{Result, Context};
5
6use super::{ValidateConfig, LoadConfig};
7
8#[derive(Debug, Serialize, Deserialize, Clone)]
9pub struct RequestConfig {
10    #[serde(flatten)]
11    pub profiles: HashMap<String, RequestProfile>,
12}
13
14impl LoadConfig for RequestConfig {}
15
16impl RequestConfig {
17    pub fn new(profiles: HashMap<String, RequestProfile>) -> Self {
18        Self {profiles}
19    }
20
21    pub fn get_profile(&self, name: &str) -> Option<&RequestProfile> {
22        self.profiles.get(name)
23    }
24}
25
26impl ValidateConfig for RequestConfig {
27    fn validate(&self) -> Result<()> {
28        for (name, profile) in &self.profiles {
29            profile
30                .validate()
31                .context(format!("failed to validate profile: {}", name))?;
32        }
33        Ok(())
34    }
35}
36
37