statsig-rust 0.19.1-beta.2604130314

Statsig Rust SDK for usage in multi-user server environments.
Documentation
use crate::{dyn_value, log_w, DynamicValue};

use super::statsig_uaparser::UaParser;

const TAG: &str = "FirstPartyUserAgentParser";

pub struct FirstPartyUserAgentParser;

impl FirstPartyUserAgentParser {
    pub fn get_value_from_user_agent(field: &str, user_agent: &str) -> Option<DynamicValue> {
        match field {
            "os_name" | "osname" => {
                let os = UaParser::parse_os(user_agent);
                Some(dyn_value!(os.name))
            }
            "os_version" | "osversion" => {
                let os = UaParser::parse_os(user_agent);
                Some(dyn_value!(os
                    .version
                    .get_version_string()
                    .unwrap_or("0.0.0".to_string())))
            }
            "browser_name" | "browsername" => {
                let browser = UaParser::parse_browser(user_agent);
                Some(dyn_value!(browser.name))
            }
            "browser_version" | "browserversion" => {
                let browser = UaParser::parse_browser(user_agent);
                Some(dyn_value!(browser
                    .version
                    .get_version_string()
                    .unwrap_or("0.0.0".to_string())))
            }
            _ => {
                log_w!(TAG, "Unsupported field: {}", field);
                None
            }
        }
    }
}