#twitch #part #ttv-rs #publishing #endpoints #twitch-oauth2

ttv-auth

作为twitch_oauth2的包装库,用于在ttv-rs中发布

2个版本

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

#597 in 认证


ttv-rs中使用

MIT/Apache

2KB

ttv-rs

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

为什么?

这个crate集合的诞生源于创建一个"一库统治所有!"的愿望,以便使用Rust与Twitch API交互。最初我认为每个子crate可能都会依赖于crates.io上不同的已存在crate,或者在没有任何合适的crate的情况下自行实现功能。然而,自从我开始这个项目以来,我意识到我最初认为仅打算覆盖Helix和TMI的twitch-api2 crate,实际上有志于最终覆盖其他大多数端点(见此问题)。因此,这个库目前仅提供了一种方法,可以将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目前不兼容许可)
遗留Drops ❌ 未实现

非官方Twitch API

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

贡献

目前,我主要在寻找对我愿景和想法的反馈,以及可能适合此项目的现有crate。PR欢迎,但请注意,我可能对组织方式有很强烈的看法,并且可能会经常改变主意。

许可

MIT和Apache 2.0许可

依赖项

~4–18MB
~265K SLoC