#[non_exhaustive]
pub struct TwitchClient<'a, C>where
    C: HttpClient<'a>,
{ pub helix: HelixClient<'a, C>, pub tmi: TmiClient<'a, C>, }
Available on crate feature client and (crate features helix or tmi) only.
Expand description

Client for Twitch APIs.

Most http clients will be able to use the 'static lifetime

pub struct MyStruct {
    twitch: TwitchClient<'static, reqwest::Client>,
    token: twitch_oauth2::AppAccessToken,
}
// etc

See client for implemented clients, you can also define your own if needed.

Fields (Non-exhaustive)

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
helix: HelixClient<'a, C>
Available on crate feature helix only.

Helix endpoint. See helix

tmi: TmiClient<'a, C>
Available on crate feature tmi only.

TMI endpoint. See tmi

Implementations

Create a new TwitchClient

Examples found in repository?
src/lib.rs (line 207)
207
    fn default() -> Self { Self::new() }
More examples
Hide additional examples
examples/get_streams_and_chatters.rs (line 9)
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
async fn main() {
    let _ = dotenvy::dotenv();
    let mut args = std::env::args().skip(1);
    let client: TwitchClient<reqwest::Client> = TwitchClient::new();
    let token = UserToken::from_existing(
        &client,
        std::env::var("TWITCH_TOKEN")
            .ok()
            .or_else(|| args.next())
            .map(AccessToken::new)
            .expect("Please set env: TWITCH_TOKEN or pass token as first argument"),
        None,
        None,
    )
    .await
    .unwrap();

    let streams: Vec<String> = args.collect();
    let req = GetStreamsRequest::default();

    let response = client.helix.req_get(req, &token).await.unwrap();

    // Note: This will fetch chatters in the current most viewed stream, might spam your console a bit.
    println!("GetStreams:\n\t{:?}", response.data);
    if let Some(stream) = streams.get(0) {
        println!(
            "{:?}",
            client.tmi.get_chatters(stream.as_str().into()).await
        );
    } else if let Some(stream) = response.data.get(0).map(|stream| &stream.user_login) {
        println!("{:?}", client.tmi.get_chatters(stream).await);
    }
}

Create a new TwitchClient with an existing HttpClient

Examples found in repository?
src/lib.rs (line 201)
198
199
200
201
202
    pub fn new() -> TwitchClient<'static, C>
    where C: Clone + client::ClientDefault<'static> {
        let client = C::default_client();
        Self::with_client(client)
    }

Retrieve a reference of the HttpClient inside this TwitchClient

Examples found in repository?
src/client.rs (line 336)
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
    fn req(
        &'a self,
        request: http::Request<Vec<u8>>,
    ) -> BoxedFuture<
        'a,
        Result<http::Response<Vec<u8>>, <Self as twitch_oauth2::client::Client>::Error>,
    > {
        let client = self.get_client();
        {
            let request = request.map(Bytes::from);
            let resp = client.req(request);
            Box::pin(async {
                let resp = resp.await?;
                let (parts, mut body) = resp.into_parts();
                Ok(http::Response::from_parts(
                    parts,
                    hyper::body::to_bytes(&mut body)
                        .await
                        .map_err(CompatError::BodyError)?
                        .to_vec(),
                ))
            })
        }
    }

Trait Implementations

Error returned by the client
Send a request
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Returns the “default value” for a type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more