Skip to content

Commit c2cf63f

Browse files
committed
use real types for user id and username
1 parent 611a208 commit c2cf63f

File tree

4 files changed

+21
-15
lines changed

4 files changed

+21
-15
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ aliri_braid = "0.1.9"
3535
url = "2.2.2"
3636
base64 = "0.13.0"
3737
rand = "0.8.4"
38+
twitch_types = "0.1.0"
3839

3940
[dev-dependencies]
4041
tokio = { version = "1.12.0", features = ["rt-multi-thread", "macros", "test-util"] }

src/tokens.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ pub mod errors;
55
mod user_token;
66

77
pub use app_access_token::AppAccessToken;
8+
use twitch_types::{UserId, UserName, UserIdRef, UserNameRef};
89
pub use user_token::{ImplicitUserTokenBuilder, UserToken, UserTokenBuilder};
910

1011
use crate::client::Client;
@@ -47,9 +48,9 @@ pub trait TwitchToken {
4748
/// ```
4849
fn token(&self) -> &AccessToken;
4950
/// Get the username associated to this token
50-
fn login(&self) -> Option<&str>;
51+
fn login(&self) -> Option<&UserNameRef>;
5152
/// Get the user id associated to this token
52-
fn user_id(&self) -> Option<&str>;
53+
fn user_id(&self) -> Option<&UserIdRef>;
5354
/// Refresh this token, changing the token to a newer one
5455
async fn refresh_token<'a, C>(
5556
&mut self,
@@ -121,9 +122,9 @@ impl<T: TwitchToken + Send> TwitchToken for Box<T> {
121122

122123
fn token(&self) -> &AccessToken { (**self).token() }
123124

124-
fn login(&self) -> Option<&str> { (**self).login() }
125+
fn login(&self) -> Option<&UserNameRef> { (**self).login() }
125126

126-
fn user_id(&self) -> Option<&str> { (**self).user_id() }
127+
fn user_id(&self) -> Option<&UserIdRef> { (**self).user_id() }
127128

128129
async fn refresh_token<'a, C>(
129130
&mut self,
@@ -149,9 +150,9 @@ pub struct ValidatedToken {
149150
/// Client ID associated with the token. Twitch requires this in all helix API calls
150151
pub client_id: ClientId,
151152
/// Username associated with the token
152-
pub login: Option<String>,
153+
pub login: Option<UserName>,
153154
/// User ID associated with the token
154-
pub user_id: Option<String>,
155+
pub user_id: Option<UserId>,
155156
/// Scopes attached to the token.
156157
pub scopes: Option<Vec<Scope>>,
157158
/// Lifetime of the token

src/tokens/app_access_token.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use twitch_types::{UserIdRef, UserNameRef};
2+
13
use super::errors::{AppAccessTokenError, ValidationError};
24
use crate::{
35
client::Client,
@@ -47,9 +49,9 @@ impl TwitchToken for AppAccessToken {
4749

4850
fn token(&self) -> &AccessToken { &self.access_token }
4951

50-
fn login(&self) -> Option<&str> { None }
52+
fn login(&self) -> Option<&UserNameRef> { None }
5153

52-
fn user_id(&self) -> Option<&str> { None }
54+
fn user_id(&self) -> Option<&UserIdRef> { None }
5355

5456
async fn refresh_token<'a, C>(
5557
&mut self,

src/tokens/user_token.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use twitch_types::{UserId, UserName, UserIdRef, UserNameRef};
2+
13
use crate::client::Client;
24
use crate::tokens::{
35
errors::{RefreshTokenError, UserTokenExchangeError, ValidationError},
@@ -20,9 +22,9 @@ pub struct UserToken {
2022
client_id: ClientId,
2123
client_secret: Option<ClientSecret>,
2224
/// Username of user associated with this token
23-
pub login: String,
25+
pub login: UserName,
2426
/// User ID of the user associated with this token
25-
pub user_id: String,
27+
pub user_id: UserId,
2628
/// The refresh token used to extend the life of this user token
2729
pub refresh_token: Option<RefreshToken>,
2830
/// Expiration from when the response was generated.
@@ -61,8 +63,8 @@ impl UserToken {
6163
refresh_token: impl Into<Option<RefreshToken>>,
6264
client_id: impl Into<ClientId>,
6365
client_secret: impl Into<Option<ClientSecret>>,
64-
login: String,
65-
user_id: String,
66+
login: UserName,
67+
user_id: UserId,
6668
scopes: Option<Vec<Scope>>,
6769
expires_in: Option<std::time::Duration>,
6870
) -> UserToken {
@@ -155,7 +157,7 @@ impl UserToken {
155157
http_client: &'a C,
156158
client_id: ClientId,
157159
client_secret: ClientSecret,
158-
user_id: impl AsRef<str>,
160+
user_id: impl AsRef<UserIdRef>,
159161
scopes: Vec<Scope>,
160162
) -> Result<UserToken, UserTokenExchangeError<<C as Client<'a>>::Error>>
161163
where
@@ -209,9 +211,9 @@ impl TwitchToken for UserToken {
209211

210212
fn token(&self) -> &AccessToken { &self.access_token }
211213

212-
fn login(&self) -> Option<&str> { Some(&self.login) }
214+
fn login(&self) -> Option<&UserNameRef> { Some(&self.login) }
213215

214-
fn user_id(&self) -> Option<&str> { Some(&self.user_id) }
216+
fn user_id(&self) -> Option<&UserIdRef> { Some(&self.user_id) }
215217

216218
async fn refresh_token<'a, C>(
217219
&mut self,

0 commit comments

Comments
 (0)