-
Notifications
You must be signed in to change notification settings - Fork 36
/
Copy pathclient.rs
55 lines (50 loc) · 1.44 KB
/
client.rs
1
2
3
4
5
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
use twitch_api::{helix::streams::GetStreamsRequest, types, TwitchClient};
use twitch_oauth2::{AccessToken, UserToken};
fn main() {
use std::error::Error;
if let Err(err) = run() {
println!("Error: {err}");
let mut e: &'_ dyn Error = err.as_ref();
while let Some(cause) = e.source() {
println!("Caused by: {cause}");
e = cause;
}
}
}
#[derive(Default)]
pub struct FooClient {
client: TwitchClient<'static, reqwest::Client>,
}
#[tokio::main]
async fn run() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
let _ = dotenvy::dotenv();
let mut args = std::env::args().skip(1);
let foo_client = FooClient::default();
let token = UserToken::from_existing(
&foo_client.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?;
foo_client.client.helix.clone_client();
let response = foo_client
.client
.helix
.req_get(
GetStreamsRequest::user_logins(
&[types::UserNameRef::from_str(
&args.next().expect("please provide an username"),
)][..],
),
&token,
)
.await?
.data;
println!("{response:?}");
Ok(())
}