diff options
Diffstat (limited to 'src/helix/namespaces')
-rw-r--r-- | src/helix/namespaces/auth.rs | 31 | ||||
-rw-r--r-- | src/helix/namespaces/clips.rs | 17 | ||||
-rw-r--r-- | src/helix/namespaces/mod.rs | 7 | ||||
-rw-r--r-- | src/helix/namespaces/users.rs | 55 | ||||
-rw-r--r-- | src/helix/namespaces/videos.rs | 28 |
5 files changed, 50 insertions, 88 deletions
diff --git a/src/helix/namespaces/auth.rs b/src/helix/namespaces/auth.rs index 1ad5c57..1900fbf 100644 --- a/src/helix/namespaces/auth.rs +++ b/src/helix/namespaces/auth.rs @@ -1,10 +1,6 @@ -use std::collections::BTreeMap; -use crate::helix::models::Credentials; -use super::super::Client; -const ID_DOMAIN: &'static str = "id.twitch.tv"; -use super::Namespace; -use crate::client::{ClientTrait, ApiRequest}; -use reqwest::Method; +use super::*; +use crate::models::Credentials; +use crate::namespace::auth; pub struct Auth {} type AuthNamespace = Namespace<Auth>; @@ -12,8 +8,7 @@ type AuthNamespace = Namespace<Auth>; impl AuthNamespace { pub fn client_credentials(self, secret: &str) -> ApiRequest<Credentials> { - use self::client_credentials; - client_credentials(self.client, secret) + auth::client_credentials(self.client.inner, secret) } } @@ -22,21 +17,3 @@ impl Client { AuthNamespace::new(self) } } - -//TODO: Implement scopes -pub fn client_credentials(client: Client, secret: &str) - -> ApiRequest<Credentials> { - - let client = client.inner; - let url = - String::from("https://") + - ID_DOMAIN + "/oauth2/token"; - - let mut params = BTreeMap::new(); - params.insert("client_id", client.id()); - params.insert("client_secret", secret); - params.insert("grant_type", "client_credentials"); - params.insert("scope", ""); - - ApiRequest::new(url, params, client.clone(), Method::POST, None) -} diff --git a/src/helix/namespaces/clips.rs b/src/helix/namespaces/clips.rs index 28b66f7..1de2e33 100644 --- a/src/helix/namespaces/clips.rs +++ b/src/helix/namespaces/clips.rs @@ -1,36 +1,31 @@ -use std::collections::BTreeMap; -use super::super::models::{DataContainer, Clip}; -use super::super::Client; -use super::Namespace; - -use crate::client::{RatelimitKey, ClientTrait, ApiRequest}; +use super::*; +use super::models::{DataContainer, Clip}; +use crate::types::ClipId; pub struct Clips {} type ClipsNamespace = Namespace<Clips>; impl ClipsNamespace { - pub fn clip(self, id: &str) -> ApiRequest<DataContainer<Clip>> { + pub fn clip(self, id: &ClipId) -> ApiRequest<DataContainer<Clip>> { use self::clip; clip(self.client, id) } } impl Client { - pub fn clips(&self) -> ClipsNamespace { ClipsNamespace::new(self) } } -use reqwest::Method; -pub fn clip(client: Client, id: &str) +pub fn clip(client: Client, id: &ClipId) -> ApiRequest<DataContainer<Clip>> { let client = client.inner; let url = String::from("https://") + - client.domain() + "/helix/clips" + "?id=" + id; + client.domain() + "/helix/clips" + "?id=" + id.as_ref(); let params = BTreeMap::new(); diff --git a/src/helix/namespaces/mod.rs b/src/helix/namespaces/mod.rs index 1c0d08e..8adc1e3 100644 --- a/src/helix/namespaces/mod.rs +++ b/src/helix/namespaces/mod.rs @@ -1,5 +1,10 @@ use std::marker::PhantomData; -use super::Client; + +pub use super::Client; +pub use crate::client::{RatelimitKey, ClientTrait, ApiRequest, IterableApiRequest}; +pub use std::collections::BTreeMap; +pub use reqwest::Method; +pub use super::models; pub mod clips; pub mod users; diff --git a/src/helix/namespaces/users.rs b/src/helix/namespaces/users.rs index 3e4f1dd..20f2914 100644 --- a/src/helix/namespaces/users.rs +++ b/src/helix/namespaces/users.rs @@ -1,56 +1,45 @@ -use futures::future::Future; -use super::super::models::{DataContainer, PaginationContainer, User, Video, Clip}; -use super::super::Client; -use std::collections::BTreeMap; -const API_DOMAIN: &'static str = "api.twitch.tv"; -use super::Namespace; +use super::*; +use super::models::{DataContainer, User}; +use crate::types::UserId; pub struct Users {} type UsersNamespace = Namespace<Users>; impl UsersNamespace { - /* - pub fn users(self, id: Vec<&str>, login: Vec<&str>) -> impl Future<Item=DataContainer<User>, Error=reqwest::Error> { - //use self::users; - //users(self.client, id, login) + pub fn users(self, ids: Vec<&UserId>, logins: Vec<&str>) + -> ApiRequest<DataContainer<User>> { + use self::users; + users(self.client, ids, logins) } - */ } -/* -impl Client { +impl Client { pub fn users(&self) -> UsersNamespace { UsersNamespace::new(self) } } -*/ -/* + pub fn users( client: Client, - id: Vec<&str>, - login: Vec<&str>, - ) -> impl Future<Item = DataContainer<User>, Error = reqwest::Error> { + ids: Vec<&UserId>, + logins: Vec<&str>, + ) -> ApiRequest<DataContainer<User>> { + let client = client.inner; let url = - String::from("https://") + &String::from(API_DOMAIN) + &String::from("/helix/users"); + String::from("https://") + client.domain() + &String::from("/helix/users"); let mut params = BTreeMap::new(); - for i in id { - params.insert("id", i); + for id in ids { + params.insert("id", id.as_ref()); } - for log in login { - params.insert("login", log); + for login in logins { + params.insert("login", login); } - let request = client.client().get(&url); - let request = client.apply_standard_headers(request); - let request = request.query(¶ms); + ApiRequest::new(url, params, client, Method::GET, Some(RatelimitKey::Default)) +} - request - .send() - .map(|mut res| { - res.json::<DataContainer<User>>() - }) - .and_then(|json| json) +pub fn authed_as(client: Client) -> ApiRequest<DataContainer<User>> { + users(client, Vec::with_capacity(0), Vec::with_capacity(0)) } -*/ diff --git a/src/helix/namespaces/videos.rs b/src/helix/namespaces/videos.rs index a8021f3..75b702e 100644 --- a/src/helix/namespaces/videos.rs +++ b/src/helix/namespaces/videos.rs @@ -1,29 +1,25 @@ -use super::super::models::{PaginationContainer, Video}; -use super::super::Client; -use super::Namespace; - -use crate::client::{ClientTrait, RatelimitKey, IterableApiRequest}; -use std::collections::BTreeMap; -use reqwest::Method; +use super::*; +use super::models::{PaginationContainer, Video}; +use crate::types::{UserId, GameId, VideoId}; pub struct Videos {} type VideosNamespace = Namespace<Videos>; impl VideosNamespace { - pub fn by_id(self, ids: Vec<&str>) + pub fn by_id(self, ids: Vec<&VideoId>) -> IterableApiRequest<PaginationContainer<Video>> { use self::by_id; by_id(self.client, ids) } - pub fn by_user(self, user_id: &str) + pub fn by_user(self, user_id: &UserId) -> IterableApiRequest<PaginationContainer<Video>> { use self::by_user; by_user(self.client, user_id) } - pub fn for_game(self, game_id: &str) + pub fn for_game(self, game_id: &GameId) -> IterableApiRequest<PaginationContainer<Video>> { use self::for_game; for_game(self.client, game_id) @@ -37,7 +33,7 @@ impl Client { } } -pub fn by_id(client: Client, ids: Vec<&str>) +pub fn by_id(client: Client, ids: Vec<&VideoId>) -> IterableApiRequest<PaginationContainer<Video>> { let client = client.inner; let url = @@ -45,34 +41,34 @@ pub fn by_id(client: Client, ids: Vec<&str>) let mut params = BTreeMap::new(); for id in ids { - params.insert("id", id); + params.insert("id", id.as_ref()); } IterableApiRequest::new(url, params, client, Method::GET, Some(RatelimitKey::Default)) } -pub fn by_user(client: Client, user_id: &str) +pub fn by_user(client: Client, user_id: &UserId) -> IterableApiRequest<PaginationContainer<Video>> { let client = client.inner; let url = String::from("https://") + client.domain() + &String::from("/helix/videos"); let mut params = BTreeMap::new(); - params.insert("user_id", user_id); + params.insert("user_id", user_id.as_ref()); IterableApiRequest::new(url, params, client, Method::GET, Some(RatelimitKey::Default)) } -pub fn for_game(client: Client, game_id: &str) +pub fn for_game(client: Client, game_id: &GameId) -> IterableApiRequest<PaginationContainer<Video>> { let client = client.inner; let url = String::from("https://") + client.domain() + &String::from("/helix/videos"); let mut params = BTreeMap::new(); - params.insert("game_id", game_id); + params.insert("game_id", game_id.as_ref()); IterableApiRequest::new(url, params, client, Method::GET, Some(RatelimitKey::Default)) |