restxst 0.0.1

REST-first end-to-end / black-box API testing for Rust
Documentation
use dashmap::DashMap;
use reqwest::Client;
use std::sync::Arc;

#[derive(Debug, Clone)]
pub struct ClientConfig {
    pub base_url: String,
    pub client: Client,
}

impl ClientConfig {
    pub fn new(base_url: impl Into<String>, client: Client) -> Self {
        Self {
            base_url: base_url.into(),
            client,
        }
    }
}

#[derive(Debug, Default, Clone)]
pub struct ClientRegistry {
    clients: DashMap<String, Arc<ClientConfig>>,
}

impl ClientRegistry {
    pub fn new() -> Self {
        Self {
            clients: DashMap::new(),
        }
    }

    pub fn register(&self, name: impl Into<String>, config: ClientConfig) -> &Self {
        self.clients.insert(name.into(), Arc::new(config));
        self
    }

    pub fn get(&self, name: &str) -> Option<Arc<ClientConfig>> {
        self.clients
            .get(name)
            .map(|entry| Arc::clone(entry.value()))
    }
}