reqrio 0.2.0

A lightweight, high concurrency HTTP request library
Documentation
use reqtls::{Certificate, RsaKey, ALPN};
use crate::Fingerprint;

pub(crate) enum Config<'a> {
    Server(ServerConfig<'a>),
    Client(ClientConfig<'a>),
}

impl<'a> Config<'a> {
    pub fn client_mut(&mut self) -> Option<&mut ClientConfig<'a>> {
        match self {
            Config::Server(_) => None,
            Config::Client(v) => Some(v)
        }
    }

    pub fn server_mut(&mut self) -> Option<&mut ServerConfig<'a>> {
        match self {
            Config::Server(v) => Some(v),
            Config::Client(_) => None
        }
    }
}


pub struct ClientConfig<'a> {
    pub sni: &'a str,
    pub alpn: &'a ALPN,
    pub fingerprint: &'a mut Fingerprint,
    pub client_cert: &'a mut Vec<Certificate>,
    pub cert_key: &'a RsaKey,
    pub verify: bool,
    pub ca_certs: &'a [Certificate],
}

pub struct ServerConfig<'a> {
    pub alpn: &'a ALPN,
    pub server_cert: &'a mut Vec<Certificate>,
    pub ca: &'a mut Certificate,
    pub cert_key: &'a RsaKey,
    pub verify: bool,
    pub ca_certs: &'a Vec<Certificate>,
}