Crate twitch_api

source ·
Expand description

githubcrates-iodocs-rs-big


Rust library for talking with the new Twitch API aka. "Helix", EventSub and more! Use Twitch endpoints fearlessly!

Examples

Get a channel

use twitch_api::helix::HelixClient;
use twitch_api::twitch_oauth2::{AccessToken, UserToken};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
    // Create the HelixClient, which is used to make requests to the Twitch API
    let client: HelixClient<reqwest::Client> = HelixClient::default();
    // Create a UserToken, which is used to authenticate requests.
    let token =
        UserToken::from_token(&client, AccessToken::from("mytoken"))
            .await?;

    println!(
        "Channel: {:?}",
        client.get_channel_from_login("twitchdev", &token).await?
    );

    Ok(())
}

Get information about a channel with the Get Channel Information helix endpoint.

use twitch_api::twitch_oauth2::{
    tokens::errors::AppAccessTokenError, AppAccessToken, TwitchToken,
};
use twitch_api::{helix::channels::GetChannelInformationRequest, TwitchClient};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
    let client: TwitchClient<reqwest::Client> = TwitchClient::default();
    let token = AppAccessToken::get_app_access_token(
        &client,
        "validclientid".into(),
        "validclientsecret".into(),
        vec![/* scopes */],
    )
    .await?;
    let ids: &[&twitch_types::UserIdRef] = &["27620241".into()];
    let req = GetChannelInformationRequest::broadcaster_ids(ids);
    println!(
        "{:?}",
        &client.helix.req_get(req, &token).await?.data[0].title
    );

    Ok(())
}

There is also convenience functions, like accessing channel information with a specified login name

let client = TwitchClient::default();

println!("{:?}", &client.helix.get_channel_from_login("twitch", &token).await?.unwrap().title);

Features

This crate provides almost no functionality by default, only exposing types. To enable more features, refer to below table.

Feature
twitch_oauth2Gives scopes for endpoints and topics that are needed to call them.
clientGives a client abstraction for endpoints. See for example TmiClient and HelixClient
helixEnables Helix endpoints
tmiEnables TMI endpoints
eventsubEnables deserializable structs for EventSub
pubsubEnables deserializable structs for PubSub
hmacEnable message authentication using HMAC on EventSub
timeEnable time utilities on Timestamp
allEnables all above features. Do not use this in production, it’s better if you specify exactly what you need
ureqEnables ureq for HttpClient.
surfEnables surf for HttpClient. Note that this does not enable any default client backend, if you get a compile error, specify surf in your Cargo.toml. By default, surf uses feature curl-client
reqwestEnables reqwest for HttpClient. Note that this does not enable any default TLS backend, if you get invalid URL, scheme is not http, specify reqwest in your Cargo.toml. By default, reqwest uses feature default-tls
towerEnables using tower services for HttpClient.
betaEnables beta endpoints, topics or features. Breakage may occur, semver compatibility not guaranteed.
unsupportedEnables undocumented or experimental endpoints, including beta endpoints, topics or features. Breakage may occur, semver compatibility not guaranteed.
trace_unknown_fieldsLogs ignored fields as WARN log messages where applicable. Please consider using this and filing an issue or PR when a new field has been added to the endpoint but not added to this library.
deny_unknown_fieldsAdds #[serde(deny_unknown_fields)] on all applicable structs/enums. Please consider using this and filing an issue or PR when a new field has been added to the endpoint but not added to this library.
deser_borrowMakes fields on Deserialize-able structs borrow if they can be borrowed, this feature is enabled by default, but exists to enable using serde::de::DeserializeOwned or for<'de> serde::Deserialize<'de> by disabling this feature.

Re-exports

Modules

  • clientclient
    Different clients you can use with this crate to call endpoints.
  • eventsubeventsub
    Holds serializable EventSub stuff
  • Extra types not defined in twitch_types
  • helixhelix
    Helix endpoints or the New Twitch API
  • pubsubpubsub
    Holds serializable pubsub stuff
  • tmitmi
    TMI Endpoint, twitch’s unsupported api for better chatters retrieval

Structs

  • HelixClientclient and helix
    Client for Helix or the New Twitch API
  • TmiClientDeprecatedclient and tmi
    Client for the twitch TMI endpoint, almost entirely undocumented and certainly not supported.
  • TwitchClientclient and (helix or tmi)
    Client for Twitch APIs.

Enums

Statics

Functions

  • parse_jsonserde_json
    Parse a string as T, logging ignored fields and giving a more detailed error message on parse errors
  • Parse a json Value as T, logging ignored fields and giving a more detailed error message on parse errors