12 releases (breaking)

0.10.1 Jul 23, 2020
0.10.0 Sep 2, 2019
0.9.0 Sep 2, 2019

#17 in #mixer

Apache-2.0 AND MIT

62KB
1K SLoC

Note: Mixer has shut down, so this library is useless.

Mixer Rust Wrappers

CircleCI Crates.io Docs.rs

Rust wrappers for the Mixer APIs at https://dev.mixer.com/.

Building

Requirements

  • Git
  • A recent version of Rust

Steps

git clone https://github.com/Celeo/mixer_rust_wrappers
cd mixer_rust_wrappers
cargo build

Tests

Run tests with cargo test.

If you want code coverage, you can use kcov via the included ./get_coverage.sh script.

This doesn't work well on CI, so there's no badge.

Using

Add the most recent version to your Cargo.toml and build.

This library is split into several parts: a tiny convenience wrapper for the REST API, and a wrapper for the Constellation real-time API.

REST

The REST wrapper is very simple. It basically only does two things:

  1. Handle sending the 'client-id' header
  2. Return an error for non-successful HTTP requests (outside of 2XX)

Create an instance of the REST struct with

use mixer_wrappers::REST;

let client = REST::new("your_client_id_here");

If you don't know your Client ID, you can get it from Mixer.

Send API requests with

use reqwest::Method;

let resp_text = client.query("GET", "some/endpoint", None, None).unwrap();

The query function returns a Result, so be sure to handle that appropriately.

Constellation

This wrapper makes it easy to listen to and send messages to the real-time API. Start with

use mixer_wrappers::ConstellationClient;

let (mut client, receiver) = ConstellationClient::connect("your_client_id_here").unwrap();

Note that the connect method returns a Result.

You can see a more full example of what do do with these variables in the docs.

Chat

This wrapper makes it easy to listen to and send messages to the chat server. Since the chat server doesn't have a specific, constant endpoint, connecting is a bit more involved.

Start with

use mixer_wrappers::{ChatClient, REST};

let api = REST::new(&client_id);
let chat_helper = api.chat_helper();
let channel_id = chat_helper.get_channel_id("your_username_here").unwrap();
let endpoints = chat_helper.get_servers(channel_id).unwrap();
let (mut client, receiver) = Chat::connect(endpoints[0], "your_client_id_here").unwrap();

Note that the connect method returns a Result.

You can see a more full example of what do do with these variables in the docs.

Examples

There are examples of each methods use in the documentation. For something a little more complete, look at the doc comments on the methods in the code.

For complete examples, see the ./examples directory.

License

Licensed under either of

Contributing

Please feel free to contribute. Please open an issue first (or comment on an existing one) so that I know that you want to add/change something.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~27–37MB
~694K SLoC