• Rust 99.9%
  • Just 0.1%
Find a file
2026-02-24 00:57:25 +03:00
assets distribute branding assets under apache 2.0 and notice google icons 2023-04-16 23:15:27 +09:00
examples example(ping-pong): update example 2023-09-21 15:11:25 +09:00
rive chore(rive): proper changelog date 2023-09-21 15:21:40 +09:00
rive-autumn release(autumn): bump version; add changelog 2023-09-09 18:20:53 +09:00
rive-cache-inmemory fix(build): Now building on rust 1.93.1, which added breaking compiler changes 2026-02-22 22:44:37 -07:00
rive-gateway add TODOs 2023-09-21 15:08:27 +09:00
rive-http http: bump version 2026-02-24 00:57:25 +03:00
rive-models release(models): bump version; add changelog 2023-09-09 15:12:08 +09:00
.gitignore refactor: remove Cargo.lock 2023-09-09 14:48:45 +09:00
.woodpecker.yml Revert "ci: Use Forgejo Actions instead of Woodpecker" 2023-12-18 00:57:06 +09:00
Cargo.toml fix: resolve deps resolver warining 2023-09-09 14:48:55 +09:00
Justfile chore: update justfile 2023-09-08 22:30:01 +09:00
LICENSE chore: create LICENSE 2022-07-22 00:56:50 +03:00
README.md readme: note 2023-10-07 22:59:54 +09:00

Note: the new major version is being worked on in the v2 branch, which will then be merged into the main branch. Only bug fixes are accepted into the main.

Rive

Rive banner

Rive is a simple yet powerful and flexible ecosystem of Rust crates for the Revolt API. It implements the entire Revolt API and is suitable for creating custom clients or bots.

The main principle of implementation is simplicity and straightforwardness. This makes it easier to understand and easier to contribute.

The ecosystem includes rive-models, rive-http, rive-gateway and more. These are explained below.

The main rive crate just re-exports these crates. Using crates individually is recommended though.

You can join the support server here.

MSRV

The minimum supported Rust version is 1.64.

Crates

These are crates that most users will use together for a full development experience. You may not need all of these, but they are often used together to accomplish most of what you need.

rive

An all-in-one crate that re-exports all other crates. It also provides an object which includes all the stuff to interact with Revolt. This is useful for quick prototyping. However, it is recommended to use each crate separately for more flexibility.

rive-models

Models defining structures, enumerations and bitflags of all Revolt API entities. Models are split into sub-modules, for example user for containing types specific to the user's entity, event for containing events coming from WebSocket or data for containing fields used in API requests.

Models can be serialized or deserialized using Serde.

rive-http

HTTP client supporting all of the Revolt REST API. It is based on reqwest.

rive-gateway

Implementation of Revolt's WebSocket API. This is responsible for receiving events in real-time from Revolt and sending some information. It is based on tokio-tungstenite.

It also includes a basic automatic heartbeat mechanism (server pinging to keep the connection alive). If you want more advanced features such as server latency measurement, you'll need to implement it yourself.

rive-autumn

An HTTP client for the Autumn, a microservice responsible for storing files and attachment on Revolt. Based on reqwest and Tokio's async I/O.

rive-cache-inmemory

An implementation of in-memory cache.

It processes incoming events, and adds/modifies/removes resources depending on the event type and data.

Credits

  • Models were taken directly from the Revolt's backend.
  • This project is heavily inspired by twilight. <3
  • Rive logo was remixed from Google Icons.

License

Crates are distributed under GNU Lesser General Public License v2.1. Branding assets are distributed under Apache License 2.0.