1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
#![warn(missing_docs)]
//! A simple library for getting random user agents from a list of popular browsers
//! such as Chrome, Firefox, Safari, Opera, Edge, and Internet Explorer.
//!
//! The user agents are hard-coded into the binary. They can be found [here](https://github.com/fake-useragent/fake-useragent/blob/master/src/fake_useragent/data/browsers.json).
//!
//! # Examples
//!
//! Get a random user agent from Chrome, Opera, Firefox, Safari, Edge, or Internet Explorer:
//! ```
//! use fake_user_agent::get_rua;
//! let rua = get_rua(); // &'static str
//! ```
//!
//! If you want a *specific type of browser* user agent, you can use the following:
//!
//! Get a random Chrome user agent:
//! ```
//! use fake_user_agent::get_chrome_rua;
//! let rua = get_chrome_rua(); // &'static str
//! ```
//!
//! Get a random Opera user agent:
//! ```
//! use fake_user_agent::get_opera_rua;
//! let rua = get_opera_rua(); // &'static str
//! ```
//!
//! Get a random Firefox user agent:
//! ```
//! use fake_user_agent::get_firefox_rua;
//! let rua = get_firefox_rua(); // &'static str
//! ```
//!
//! Get a random Safari user agent:
//! ```
//! use fake_user_agent::get_safari_rua;
//! let rua = get_safari_rua(); // &'static str
//! ```
//!
//! Get a random Edge user agent:
//! ```
//! use fake_user_agent::get_edge_rua;
//! let rua = get_edge_rua(); // &'static str
//! ```
//!
//! Get a random Internet Explorer user agent:
//! ```
//! use fake_user_agent::get_ie_rua;
//! let rua = get_ie_rua(); // &'static str
//! ```
/// User agent module
mod user_agents;
/// Using fastrand for random number generation
extern crate fastrand;
/// Importing user agents
use user_agents::{
CHROME_USER_AGENTS, EDGE_USER_AGENTS, FIREFOX_USER_AGENTS, IE_USER_AGENTS, OPERA_USER_AGENTS,
SAFARI_USER_AGENTS,
};
/// Gets a random chrome user agent
pub fn get_chrome_rua() -> &'static str {
let ri = fastrand::usize(..CHROME_USER_AGENTS.len());
CHROME_USER_AGENTS[ri]
}
/// Gets a random opera user agent
pub fn get_opera_rua() -> &'static str {
let ri = fastrand::usize(..OPERA_USER_AGENTS.len());
OPERA_USER_AGENTS[ri]
}
/// Gets a random firefox user agent
pub fn get_firefox_rua() -> &'static str {
let ri = fastrand::usize(..FIREFOX_USER_AGENTS.len());
FIREFOX_USER_AGENTS[ri]
}
/// Gets a random safari user agent
pub fn get_safari_rua() -> &'static str {
let ri = fastrand::usize(..SAFARI_USER_AGENTS.len());
SAFARI_USER_AGENTS[ri]
}
/// Gets a random edge user agent
pub fn get_edge_rua() -> &'static str {
let ri = fastrand::usize(..EDGE_USER_AGENTS.len());
EDGE_USER_AGENTS[ri]
}
/// Gets a random internet explorer user agent
pub fn get_ie_rua() -> &'static str {
let ri = fastrand::usize(..IE_USER_AGENTS.len());
IE_USER_AGENTS[ri]
}
/// Gets a random user agent (Chrome, Opera, Firefox, Safari, Edge, or IE).
pub fn get_rua() -> &'static str {
let browser = BrowserType::get_random();
match browser {
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(),
}
}
enum BrowserType {
Chrome,
Opera,
Firefox,
Safari,
Edge,
IE,
}
impl BrowserType {
pub fn get_random() -> Self {
let random_number = fastrand::usize(..5);
match random_number {
0 => BrowserType::Chrome,
1 => BrowserType::Opera,
2 => BrowserType::Firefox,
3 => BrowserType::Safari,
4 => BrowserType::Edge,
5 => BrowserType::IE,
_ => unreachable!(),
}
}
}
#[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)
);
}
}