use semver::Version;
use std::str::FromStr;
static USER_AGENT: &str = include_str!(concat!(env!("OUT_DIR"), "/user_agent"));
#[doc(hidden)]
pub fn user_agent() -> String {
let os = os_info::get();
format!("{}/{}", USER_AGENT, os)
}
#[doc(hidden)]
pub fn os_info() -> String {
os_info::get().to_string()
}
#[doc(hidden)]
pub fn exonum_version() -> Option<Version> {
let version = USER_AGENT.split('/').next()?;
Version::from_str(version).ok()
}
#[doc(hidden)]
pub fn rust_version() -> Option<Version> {
let version = USER_AGENT.split('/').nth(1)?;
Version::from_str(version).ok()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn components() {
let user_agent = user_agent();
let components: Vec<_> = user_agent.split('/').collect();
assert_eq!(components.len(), 3);
for val in components {
assert!(!val.is_empty());
}
}
#[test]
fn check_exonum_versions() {
assert!(exonum_version().is_some());
}
#[test]
fn check_rust_versions() {
assert!(rust_version().is_some());
}
}