4 个版本 (稳定版)
2.0.1 | 2020年2月16日 |
---|---|
2.0.0 | 2020年2月2日 |
1.0.0 | 2019年8月11日 |
0.1.2 | 2019年8月10日 |
在 解析器实现 中排名 #1522
34KB
577 行代码
fast_uaparser
解析 User-Agent 请求头 字符串。
它是如何工作的?
解析器是从在 ua-parser/ua-core 仓库发布的正则表达式派生出来的。正则表达式在自定义构建步骤中获取,然后用于生成编译进库的静态 Rust 代码。
在运行时加载解析器对象存在一次性的初始化成本,这发生在调用 init
函数 时。如果没有显式调用 init
,则初始化将懒加载,解析将在初始化完成后继续。
我该如何安装它?
在 Cargo.toml
中的依赖项中添加它
[dependencies]
fast_uaparser = "1"
我该如何使用它?
有关更详细的信息,请参阅 API 文档,但大致内容如下
use fast_uaparser::{Device, OperatingSystem, UserAgent};
// Pay initialisation costs up-front
fast_uaparser::init().unwrap();
// Parse user-agent information
let ua: UserAgent =
"Mozilla/5.0 (X11; Linux i686; rv:70.0) Gecko/20100101 Firefox/70.0"
.parse()
.unwrap();
assert_eq!(ua.family, "Firefox");
assert_eq!(ua.version.major.unwrap(), "70");
assert_eq!(ua.version.minor.unwrap(), "0");
assert!(ua.version.patch.is_none());
assert!(ua.version.patch_minor.is_none());
// Parse OS information
let os: OperatingSystem =
"Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1 Mobile/15E148 Safari/604.1"
.parse()
.unwrap();
assert_eq!(os.family, "iOS");
assert_eq!(os.version.major.unwrap(), "12");
assert_eq!(os.version.minor.unwrap(), "2");
assert!(os.version.patch.is_none());
assert!(os.version.patch_minor.is_none());
// Parse device information
let device: Device =
"Mozilla/5.0 (Windows Mobile 10; Android 8.0.0; Microsoft; Lumia 950XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.89 Mobile Safari/537.36 Edge/40.15254.369"
.parse()
.unwrap();
assert_eq!(device.family, "Lumia 950XL");
assert_eq!(device.brand.unwrap(), "Nokia");
assert_eq!(device.model.unwrap(), "Lumia 950XL");
我该如何设置开发环境?
如果您还没有安装 Rust,请首先使用 rustup
安装
curl https://sh.rustup.rs -sSf | sh
然后您可以构建项目
cargo b
并运行测试
cargo t
API 文档在哪里?
这里.
变更日志在哪里?
它是基于什么许可证发布的?
依赖项
~3–11MB
~117K SLoC