1mod firefox;
2
3#[derive(Debug, Clone)]
4pub struct UserAgent {
5 pub user_agent: String,
6 pub is_estimated: bool,
7}
8
9#[derive(Debug, Copy, Clone)]
10pub enum Browser {
11 Firefox,
12}
13
14#[derive(Debug, Copy, Clone)]
15pub enum OS {
16 LinuxIntelx64,
17 WindowsIntelx64,
18}
19
20pub async fn get_latest_user_agent(browser: Browser, os: OS, offline_mode: bool) -> UserAgent {
25 let mut version = None;
26 let mut is_estimated = false;
27
28 if !offline_mode {
29 version = match browser {
30 Browser::Firefox => firefox::get_latest_ua(os).await,
31 };
32 }
33
34 if version.is_none() {
35 if !offline_mode {
36 log::warn!("Couldn't retrieve actual UserAgent for {:?} from internet. UserAgent will be estimated.", browser);
37 }
38
39 version = Some(match browser {
40 Browser::Firefox => firefox::estimate_latest_ua(os),
41 });
42 is_estimated = true;
43 }
44
45 UserAgent {
46 user_agent: version.unwrap(),
47 is_estimated,
48 }
49}