xdiff_live/config/
xreq.rs1use 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