dialtone_axum 0.1.0

Dialtone Axum Back-end
Documentation
use axum::http::HeaderMap;
use lazy_static::lazy_static;
use regex::Regex;

lazy_static! {
    pub static ref FORWARED_FOR_RE: Regex = Regex::new(r"(?i:for=)(.*)^[;]").unwrap();
}

pub fn get_forwarded(headers: &HeaderMap) -> String {
    if !headers.contains_key("Forwarded") {
        return "unknown".to_string();
    }
    // else
    let v = &headers["Forwarded"].to_str();
    if let Ok(f_str) = v {
        let caps = FORWARED_FOR_RE.captures(f_str);
        if let Some(caps) = caps {
            if let Some(forwared_for_id) = caps.get(1) {
                return forwared_for_id.as_str().to_string();
            }
        }
    }
    //else
    "unknown".to_string()
}