#properties #devices #detection

fiftyonedegrees

51Degrees 设备检测 C 库的包装器

22 个版本

0.2.20 2023年2月21日
0.2.19 2023年2月20日
0.2.18 2022年12月17日
0.2.17 2021年6月29日
0.1.1 2019年10月27日

#307数据结构

Download history 71/week @ 2024-04-03

54 每月下载量

MIT 许可证

1.5MB
32K SLoC

Rust 20K SLoC // 0.0% comments C 9K SLoC // 0.2% comments C++ 2.5K SLoC // 0.2% comments SWIG 536 SLoC // 0.5% comments

使用

use fiftyonedegrees::properties::PropertyName;
use fiftyonedegrees::api::DeviceDetection;

fn main() {
    let properties = vec![PropertyName::IsMobile];

    let engine = DeviceDetection::new("path/to/file.hash", properties);

    let result = engine.lookup("my user agent");
    
    let boolean = result.getValueAsBoolean(&PropertyName::IsMobile).unwrap().unwrap();
    let string = result.getValueAsString(&PropertyName::BrowserName).unwrap().unwrap();
}

开发

安装 Rust

https://rust-lang.net.cn/tools/install

安装 bindgen

cargoinstall bindgen-cli

下载 C 代码

gitsubmodule update --init --recursive

更新到最新的 device-detection-cxx

将 git 子模块指向目标标签

cddevice-detection-cxx

gitcheckout 4.2.3

cdsrc/common-cxx

gitsubmodule update

为 Rust 重新生成 C 绑定

bindgen src/shim/wrapper.h -o src/shim/mod.rs

运行测试

cargotest

性能基准测试

cargorun --examplebenchmark --release

无运行时依赖