emixnet 0.6.0

Higher-level HTTP, mail, and VPN helpers layered on EssentialMix core utilities.
Documentation
use reqwest::{Client, ClientBuilder, blocking, header};

fn build_default_headers() -> header::HeaderMap {
    let mut headers = header::HeaderMap::new();
    headers.insert(
        header::CACHE_CONTROL,
        header::HeaderValue::from_static("no-cache"),
    );
    headers.insert(header::PRAGMA, header::HeaderValue::from_static("no-cache"));
    headers.insert(
        header::CONNECTION,
        header::HeaderValue::from_static("keep-alive"),
    );
    headers
}

fn build_default_api_headers() -> header::HeaderMap {
    let mut headers = build_default_headers();
    headers.insert(
        header::ACCEPT,
        header::HeaderValue::from_static("application/json"),
    );
    headers.insert(
        header::CONTENT_TYPE,
        header::HeaderValue::from_static("application/json"),
    );
    headers
}

pub fn build_client() -> ClientBuilder {
    Client::builder()
        .default_headers(build_default_headers())
        .cookie_store(true)
        .pool_max_idle_per_host(0)
        .timeout(std::time::Duration::from_secs(30))
}

pub fn build_blocking_client() -> blocking::ClientBuilder {
    blocking::Client::builder()
        .default_headers(build_default_headers())
        .cookie_store(true)
        .pool_max_idle_per_host(0)
        .timeout(std::time::Duration::from_secs(30))
}

pub fn build_client_with_user_agent(agent: String) -> ClientBuilder {
    build_client().user_agent(agent)
}

pub fn build_blocking_client_with_user_agent(agent: String) -> blocking::ClientBuilder {
    build_blocking_client().user_agent(agent)
}

pub fn build_client_with_headers(headers: header::HeaderMap) -> ClientBuilder {
    build_client().default_headers(headers)
}

pub fn build_blocking_client_with_headers(headers: header::HeaderMap) -> blocking::ClientBuilder {
    build_blocking_client().default_headers(headers)
}

pub fn build_client_for_api() -> ClientBuilder {
    build_client().default_headers(build_default_api_headers())
}

pub fn build_blocking_client_for_api() -> blocking::ClientBuilder {
    build_blocking_client().default_headers(build_default_api_headers())
}