Crates.io | ttv-rs |
lib.rs | ttv-rs |
version | 0.1.1 |
source | src |
created_at | 2020-09-25 18:13:42.982623 |
updated_at | 2020-11-10 04:52:19.406437 |
description | A hopefully-eventually-comprehensive interface to the Twitch API. Somewhat modeled after Twitch4j. |
homepage | |
repository | https://gitlab.com/Waridley/ttv-rs |
max_upload_size | |
id | 292921 |
size | 24,411 |
Attempt at unifying the Twitch API for the Rust ecosystem.
This collection of crates was born out of a desire to create a "One library to rule them all!" to interact with the Twitch API using Rust. Initially I thought every sub-crate would likely depend on a different already-existing crate on crates.io, or implement the features itself if none were suitable. However, since beginning this project, I have realized that the twitch-api2 crate, which I originally believed was only intending to cover Helix and TMI, is actually aspiring to cover most of the other endpoints as well eventually (see this issue. Thus, this library is currently only providing a way to combine both twitchchat and twitch-api2 in one dependency, with shorter names 😛
I'm still deciding whether re-exporting twitch_api2
is really the best way to achieve my goals
below, but it is looking promising. However, even if that crate ends up covering all of the
endpoints on its own, I may end up trying to provide additional convenience features on top of it,
such as functions that automatically pick the best endpoint for certain requests, chat features that
utilize REST or pubsub endpoints, a Webhooks server, UI, database integration, etc...
Note that currently I am very impressed with Museun's twitchchat crate, and would love it if all of the other modules mimic its API and interoperate well with it. E.g., you should be able to use the same async executor for all endpoints.
Similarly, I am a fan of the sans-io approach to library design, although it's also nice if a library provides optional integration with other libraries to actually implement the IO, for less boilerplate on the end-user's part.
Also, as I stated, my ideas are heavily informed by the design of Twitch4j; however, I won't be following it precisely. I have some of my own opinions of how things should be organized as well.
Feature | Status | Current Implementation |
---|---|---|
Auth | … Testing | twitch_oauth2 |
Chat | … Testing | twitchchat |
Helix | … Testing | twitch_api2 (with only helix feature) |
Extensions | ❌ Unimplemented | None |
PubSub | … Testing | twitch_api2 (with only pubsub feature) |
Webhooks | ❌ Unimplemented | None |
Feature | Status | Current Implementation |
---|---|---|
v5 (Kraken) | ❌ Unimplemented | (libtwitch-rs is currently not license-compatible) |
Legacy Drops | ❌ Unimplemented | None |
Feature | Status | Current Implementation |
---|---|---|
TMI | … Testing | twitch_api2 (with only tmi feature) |
GraphQL | ❌ Unimplemented | None |
Currently I am mostly looking for feedback and input on my vision and ideas, as well as possible existing crates that may fit well into this project. PR's are welcome, but beware that I may be very opinionated about how things are organized and implemented, and may be changing my mind often for the time being.
Licensed under MIT and Apache 2.0