#![warn(missing_docs)]
mod user_agents;
extern crate fastrand;
use user_agents::{
CHROME_USER_AGENTS, EDGE_USER_AGENTS, FIREFOX_USER_AGENTS, IE_USER_AGENTS, OPERA_USER_AGENTS,
SAFARI_USER_AGENTS,
};
pub fn get_chrome_rua() -> &'static str {
let ri = fastrand::usize(..CHROME_USER_AGENTS.len());
CHROME_USER_AGENTS[ri]
}
pub fn get_opera_rua() -> &'static str {
let ri = fastrand::usize(..OPERA_USER_AGENTS.len());
OPERA_USER_AGENTS[ri]
}
pub fn get_firefox_rua() -> &'static str {
let ri = fastrand::usize(..FIREFOX_USER_AGENTS.len());
FIREFOX_USER_AGENTS[ri]
}
pub fn get_safari_rua() -> &'static str {
let ri = fastrand::usize(..SAFARI_USER_AGENTS.len());
SAFARI_USER_AGENTS[ri]
}
pub fn get_edge_rua() -> &'static str {
let ri = fastrand::usize(..EDGE_USER_AGENTS.len());
EDGE_USER_AGENTS[ri]
}
pub fn get_ie_rua() -> &'static str {
let ri = fastrand::usize(..IE_USER_AGENTS.len());
IE_USER_AGENTS[ri]
}
pub fn get_rua() -> &'static str {
match BrowserType::get_random() {
BrowserType::Chrome => get_chrome_rua(),
BrowserType::Opera => get_opera_rua(),
BrowserType::Firefox => get_firefox_rua(),
BrowserType::Safari => get_safari_rua(),
BrowserType::Edge => get_edge_rua(),
BrowserType::IE => get_ie_rua(),
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
enum BrowserType {
Chrome,
Opera,
Firefox,
Safari,
Edge,
IE,
}
const ALL_BROWSERS: [BrowserType; 6] = [
BrowserType::Chrome,
BrowserType::Opera,
BrowserType::Firefox,
BrowserType::Safari,
BrowserType::Edge,
BrowserType::IE,
];
impl BrowserType {
fn get_random() -> Self {
ALL_BROWSERS[fastrand::usize(..ALL_BROWSERS.len())]
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_get_chrome_rua() {
let rua = get_chrome_rua();
println!("{rua}");
assert!(CHROME_USER_AGENTS.contains(&rua));
}
#[test]
fn test_get_opera_rua() {
let rua = get_opera_rua();
assert!(OPERA_USER_AGENTS.contains(&rua));
}
#[test]
fn test_get_firefox_rua() {
let rua = get_firefox_rua();
assert!(FIREFOX_USER_AGENTS.contains(&rua));
}
#[test]
fn test_get_safari_rua() {
let rua = get_safari_rua();
assert!(SAFARI_USER_AGENTS.contains(&rua));
}
#[test]
fn test_get_edge_rua() {
let rua = get_edge_rua();
assert!(EDGE_USER_AGENTS.contains(&rua));
}
#[test]
fn test_get_ie_rua() {
let rua = get_ie_rua();
assert!(IE_USER_AGENTS.contains(&rua));
}
#[test]
fn test_get_rua() {
let rua = get_rua();
assert!(
CHROME_USER_AGENTS.contains(&rua)
|| OPERA_USER_AGENTS.contains(&rua)
|| FIREFOX_USER_AGENTS.contains(&rua)
|| SAFARI_USER_AGENTS.contains(&rua)
|| EDGE_USER_AGENTS.contains(&rua)
|| IE_USER_AGENTS.contains(&rua)
);
}
}