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

Apache-2.0 许可证

34KB
577 行代码

fast_uaparser

Build status Crate status Downloads License

解析 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 文档在哪里?

这里.

变更日志在哪里?

这里

它是基于什么许可证发布的?

Apache-2.0 许可证.

依赖项

~3–11MB
~117K SLoC