rustpbx 0.3.18

A SIP PBX implementation in Rust
Documentation
use chrono::{DateTime, Local};

pub fn get_version_info() -> &'static str {
    let version = env!("CARGO_PKG_VERSION");
    let build_time = env!("BUILD_TIME");
    let git_commit = env!("GIT_COMMIT_HASH");
    let git_branch = env!("GIT_BRANCH");
    let git_dirty = env!("GIT_DIRTY");

    let build_timestamp: i64 = build_time.parse().unwrap_or(0);
    let build_datetime: DateTime<Local> = DateTime::from_timestamp(build_timestamp, 0)
        .map(|utc| utc.with_timezone(&Local))
        .unwrap_or_else(Local::now);
    let build_time_str = build_datetime.format("%Y-%m-%d %H:%M:%S %Z").to_string();

    Box::leak(
        format!(
            "rustpbx {} ({})\n\
         Build Time: {}\n\
         Git Commit: {}\n\
         Git Branch: {}\n\
         Git Status: {}",
            version,
            rsipstack::VERSION,
            build_time_str,
            git_commit,
            git_branch,
            git_dirty
        )
        .into_boxed_str(),
    )
}

pub fn get_short_version() -> &'static str {
    let version = env!("CARGO_PKG_VERSION");
    let git_commit = env!("GIT_COMMIT_HASH");
    let git_dirty = env!("GIT_DIRTY");
    let commercial = if cfg!(feature = "commerce") {
        "commerce"
    } else {
        "community"
    };
    if git_dirty == "dirty" {
        Box::leak(format!("{}-{}-dirty-{commercial}", version, git_commit).into_boxed_str())
    } else {
        Box::leak(format!("{}-{}-{commercial}", version, git_commit).into_boxed_str())
    }
}

pub fn get_useragent() -> String {
    let version = env!("CARGO_PKG_VERSION");
    let build_time = env!("BUILD_TIME");

    let build_timestamp: i64 = build_time.parse().unwrap_or(0);
    let build_datetime: DateTime<Local> = DateTime::from_timestamp(build_timestamp, 0)
        .map(|utc| utc.with_timezone(&Local))
        .unwrap_or_else(Local::now);
    let build_time_str = build_datetime.format("%Y-%m-%d").to_string();
    format!(
        "rustpbx/{} (built {} {})",
        version,
        build_time_str,
        rsipstack::VERSION
    )
}