crypto-pair 2.3.20

Parse exchange-specific symbols to unified format
Documentation
use std::collections::HashSet;

use reqwest::{header, Result};

pub(super) fn http_get(url: &str) -> Result<String> {
    let mut headers = header::HeaderMap::new();
    headers.insert(header::CONTENT_TYPE, header::HeaderValue::from_static("application/json"));

    let client = reqwest::blocking::Client::builder()
         .default_headers(headers)
         .user_agent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")
         .gzip(true)
         .build()?;
    let response = client.get(url).send()?;

    match response.error_for_status() {
        Ok(resp) => Ok(resp.text()?),
        Err(error) => Err(error),
    }
}

pub(super) fn normalize_pair_with_quotes(symbol: &str, quotes: &HashSet<String>) -> Option<String> {
    for quote in quotes.iter() {
        if symbol.ends_with(quote) {
            let base = symbol.strip_suffix(quote).unwrap();
            return Some(format!("{base}/{quote}").to_uppercase());
        }
    }

    None
}