2个版本
0.1.1 | 2020年11月10日 |
---|---|
0.1.0 | 2020年9月25日 |
#6 in #ttv-rs
在ttv-rs中使用
2KB
ttv-rs
尝试统一Rust生态系统的Twitch API。
为什么?
这个crate集合的诞生源于创建一个"一个库统治它们所有!"的愿望,以使用Rust与Twitch API交互。最初我以为每个子crate可能都会依赖于crates.io上不同的现有crate,或者在没有任何合适的crate的情况下自己实现这些功能。然而,自从我开始这个项目以来,我已经意识到我最初认为只打算涵盖Helix和TMI的twitch-api2 crate,实际上最终也打算涵盖大多数其他端点(参见此问题)。因此,这个库目前只提供了一种方法,将twitchchat和twitch-api2结合在一个依赖项中,并且名称更短 😛
我仍在考虑重新导出twitch_api2
是否真的是实现以下目标的最有效方法,但它看起来很有希望。然而,即使那个crate最终涵盖了自己的所有端点,我也可能最终尝试在其之上提供额外的便利功能,例如自动选择某些请求的最佳端点的函数、利用REST或pubsub端点的聊天功能、Webhooks服务器、UI、数据库集成等...
目标
- 涵盖Twitch文档中列出的所有API。
- 涵盖现在已知或未来发现的几个有用的非官方端点。
- 尽可能接近Twitch文档的组织。
- 这使得crate的用户更容易找到和交叉引用文档,并利用除Rust以外的技术的教程,同时也有助于贡献者添加文档。
- 灵活性
- 只要合理,这个crate应该与实现无关(例如,能够支持各种异步运行时、网络实现、序列化库等)
- 用户应该能够避免编译他们不需要的功能。
- 然而,在我看来,一组合理的默认功能仍然至关重要。目前所有活跃和已弃用的API端点默认启用,但非官方端点则不启用。
请注意,目前我对Museun的twitchchat crate印象非常深刻,如果所有其他模块都能模仿其API并且与它很好地交互,我将非常高兴。例如,您应该能够为所有端点使用相同的异步执行器。
同样,我是sans-io库设计方法的粉丝,虽然如果库能够提供与其他库的可选集成来实现IO,减少最终用户的样板代码也是很好的。
正如我所说的,我的想法深受Twitch4j设计的影响;然而,我不会完全遵循它。我也有一些自己关于如何组织事物的看法。
进度
活跃的Twitch API
功能 | 状态 | 当前实现 |
---|---|---|
认证 | … 测试 | twitch_oauth2 |
聊天 | … 测试 | twitchchat |
Helix | … 测试 | twitch_api2(仅带有helix 功能) |
扩展 | ❌ 未实现 | 无 |
PubSub | … 测试 | twitch_api2(仅带有pubsub 功能) |
Webhooks | ❌ 未实现 | 无 |
废弃的Twitch API
功能 | 状态 | 当前实现 |
---|---|---|
v5(Kraken) | ❌ 未实现 | (libtwitch-rs目前不兼容许可证) |
遗留Drops | ❌ 未实现 | 无 |
非官方Twitch API
功能 | 状态 | 当前实现 |
---|---|---|
TMI | … 测试 | twitch_api2(仅带有tmi 功能) |
GraphQL | ❌ 未实现 | 无 |
贡献
目前我主要在寻找对我的愿景和想法的反馈以及可能适合此项目的现有crate。欢迎提交PR,但请注意,我可能对如何组织和实现事物有很强的看法,并且目前可能会经常改变想法。
许可证
根据MIT和Apache 2.0许可