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 req = GetChannelInformationRequest::broadcaster_ids(&["27620241"]);
    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 HelixClient
helixEnables Helix 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§

Structs§

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