Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rewrite it in rust #135

Open
cgsdev0 opened this issue Oct 25, 2023 · 2 comments
Open

rewrite it in rust #135

cgsdev0 opened this issue Oct 25, 2023 · 2 comments
Labels
enhancement New feature or request

Comments

@cgsdev0
Copy link
Contributor

cgsdev0 commented Oct 25, 2023

starting this thread to unify ideas we discussed in the discord

Goal

1:1 port of these parts of TAU to rust:

  1. Django served REST API and Websocket API (this is what you subscribe to/hit with your own client code)
  2. Worker process that sets up/tears down webhooks, connects and monitors the connection with IRC, and passes the data back through endpoints of 1. Also manages/handles/updates your Twitch tokens
  3. Dashboard webapp which is written in Vue, and is statically served. (we keep this part the same)

Finite's requests

There are several clients written for ingesting TAU, and I'd like to keep things compatible. So lets shoot for keeping the payloads returned the same (or similar enough that we're looking at relatively minor changes).

The Twitch APIs are constantly being updated. TAU ultimately acts as a passthrough for the Twitch endpoints, thus why I store the incoming twitch data as a json object/string in the database. I think we should continue to do this (perhaps use the same database structure that Django set up) as it makes things much much easier to keep up to date.

There is one huge gotcha that I spent a rediculous amount of time on, and we need to be aware of it as we do the re-write. For some reason, Twitch has decided in EventSub not to pass through emote information for Channel Point redemptions and Bit/Cheer redemptions. In order to get at the emotes (which are commonly used for both), I have to combine the IRC stream, with the eventsub stream. Doing this was... tricky.

There must be a way to both fire off test events, and a way to replay events.

Proposed Stack

@cgsdev0 cgsdev0 added the enhancement New feature or request label Oct 25, 2023
@swlkr
Copy link

swlkr commented Oct 25, 2023

This is so profesh

@Wackyator
Copy link

This sounds awesome

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants