#twitch #graphql #module #ttv-rs #endpoints

ttv-graphql

ttv-rs的graphql模块的占位符

2个版本

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

#4 in #ttv-rs


ttv-rs 中使用

MIT/Apache

2KB

ttv-rs

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

为什么?

这个crate集合是为了创建一个“一个库统治所有!”来使用Rust与Twitch API交互而诞生的。最初我认为每个子crate都可能依赖于crates.io上的不同已存在的crate,或者在没有任何合适的crate的情况下自行实现功能。然而,自从我开始这个项目以来,我意识到twitch-api2 crate,我最初认为它只打算覆盖Helix和TMI,实际上也打算最终覆盖其他大多数端点(见这个issue)。因此,这个库目前仅提供了一种方式,将twitchchattwitch-api2结合在一个依赖项中,名称更短 😛

我还在考虑是否重新导出twitch_api2是实现以下目标的最有效方法,但它看起来很有希望。然而,即使那个crate最终覆盖了所有端点,我也可能会在上面尝试提供额外的便利功能,例如自动选择某些请求的最佳端点的函数、利用REST或pubsub端点的聊天功能、Webhooks服务器、UI、数据库集成等...

目标

  • 涵盖Twitch文档中列出的所有API
  • 涵盖现在已知或未来发现的几个有用的非官方端点
  • 尽可能接近Twitch文档的组织结构。
    • 这使得crate的用户更容易找到和交叉引用文档,利用Rust以外的技术的教程,以及使贡献者更容易添加文档。
  • 灵活性
    • 尽可能合理,这个crate应该是实现无关的(例如,能够支持各种异步运行时、网络实现、序列化库等)
    • 用户应该能够避免编译他们不需要的功能。
      • 然而,在我看来,一套合理的默认功能仍然非常重要。目前所有**活跃**和**已弃用**的API端点默认启用,但**非官方**端点则不启用。

请注意,目前我对Museun的twitchchat包印象深刻,并希望其他模块能够模仿其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 ❌ 未实现

贡献

目前我主要在寻找对我愿景和想法的反馈和意见,以及可能适合此项目的现有包。欢迎提交PR,但请注意,我对如何组织和实现事物可能有很强的看法,并且在此期间可能会经常改变主意。

许可证

许可协议:MIT和Apache 2.0

无运行时依赖

特性