#twitch #webhook #module #ttv-rs #endpoints

ttv-webhooks

作为 ttv-rs 网络钩子模块的占位符

2个版本

0.1.1 2020年11月10日
0.1.0 2020年9月25日

7 in #ttv-rs


ttv-rs中使用

MIT/Apache

2KB

ttv-rs

尝试统一 Rust 生态系统中的 Twitch API。

为什么?

这个 crate 集合源于创建一个“一库统治所有!”的愿望,以 Rust 语言与 Twitch API 交互。最初我以为每个子 crate 可能都会依赖 crates.io 上不同的已存在的 crate,或者如果都不合适,则自行实现功能。然而,自从我开始这个项目以来,我意识到 twitch-api2 crate(最初我以为它只打算涵盖 Helix 和 TMI),实际上最终目标是涵盖其他大多数端点(参见 这个问题。因此,这个库目前只提供了一种方法,将 twitchchattwitch-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 目前与许可证不兼容)
遗留的Drop ❌ 未实现

非官方Twitch API

特性 状态 当前实现
TMI … 测试 twitch_api2(仅包含 tmi 特性)
GraphQL ❌ 未实现

贡献

目前我主要在寻找关于我的愿景和想法的反馈和建议,以及可能适合此项目的现有crate。PR是欢迎的,但请注意,我对事物的组织和方法可能非常固执己见,而且目前可能会经常改变主意。

许可证

MIT和Apache 2.0许可证

无运行时依赖

特性