3个不稳定版本
使用旧的Rust 2015
0.1.0 | 2018年11月11日 |
---|---|
0.0.2 | 2018年3月1日 |
0.0.1 | 2018年2月11日 |
#4 in #gw2
100KB
2K SLoC
GW2 RS
GW2RS是围绕ArenaNet Guild Wars 2 API的Rust API包装器。
它大量使用了futures,部分原因是因为hyper后端。包装的API调用返回的类型为GW2Result<T>,这只是一个别名,用于封装带有crate的自定义
APIError
类型的boxed futures。
通常,你可以通过首先启动一个tokio核心,然后将句柄传递给GW2结构体来使用这个库。这是必要的,因为HTTP调用被卸载到hyper,而该代码实例化的一部分需要一个事件循环的句柄,所有这些最终都将运行在该事件循环中。
示例/演示
您可以查看tests/sanity-check-*.rs
文件,其中包含使用端点的简短、基本示例。如果您熟悉当前的Futures工作流程,那么它与其他库(例如,您调用一个返回future的函数,然后在一个executor上运行它)非常一致。
extern crate gw2rs;
extern crate futures;
extern crate tokio_core;
use tokio_core::reactor::Core;
use futures::Future;
use gw2rs::prelude::*;
fn main() {
let mut reactor = Core::new().unwrap();
let gw2_client = GW2::new(String::from("B5A035FF-EBE0-7A46-B615-F910431D9D6F190E6C87-2FCF-4EA3-81BD-79A73A7C9704"), Locale::EN, reactor.handle());
let token_info = gw2_client.token_info().map(|res| {
println!("Your token is: {} - {}", res.name(), res.id());
});
reactor.run(token_info).unwrap();
}
crate特性
HTTP请求
默认情况下,GW2RS使用请求头同时用于认证令牌和区域。您可以使用query-auth
或query-locale
特性覆盖此功能并将它们存储在URL作为查询参数,或者更常见的是使用query-all
特性。您需要禁用默认特性,否则它们将出现在两个地方(这不应该伤害任何东西,但这会增加不必要的额外工作)。
测试
运行测试非常简单。目前有几个基本检查集成测试,应针对每个端点运行简单的请求/断言链,以及几个针对GW2结构体字段交互的基本检查。您可以使用cargo test
运行一切。
唯一的注意事项是,由于某些API调用需要API键的各种权限,您需要提供该键。测试期望GW2RS_TEST_API_KEY
被设置,如果没有设置则将引发panic。
实现端点
实现新端点是一个相当简单的过程
- 更新Endpoint枚举以包含端点的变体和路径
- 在anet模块下创建任何相关的结构体
- 更新prelude模块,以便glob导入可以正确地导入新类型
- 在gw2结构体中添加暴露的函数,以便用户可以处理端点。
- 在
test/sanity-check-apis.rs
集成测试中添加合理性检查。
实现GW2结构体函数需要大量复制粘贴,但我找不到一个简单的宏,不需要在宏中重新输入基本上相同的数据,所以目前还是复制 + 粘贴 + 需要时调整。
依赖项
约10-19MB
约276K SLoC