diff options
author | David Blajda <blajda@hotmail.com> | 2018-12-27 04:46:10 +0000 |
---|---|---|
committer | David Blajda <blajda@hotmail.com> | 2018-12-27 04:46:10 +0000 |
commit | cb1b144e48ee357a76f551433d4886f092d259c8 (patch) | |
tree | 15606dc621e4d68f3bf3e9d27a44e6fd02a00fc5 /src/namespace | |
parent | 2e08d0c8abbfb9f989c61acb4f6c580719a65b42 (diff) |
Use a generic client for both helix and kraken
Diffstat (limited to 'src/namespace')
-rw-r--r-- | src/namespace/auth.rs | 55 | ||||
-rw-r--r-- | src/namespace/mod.rs | 1 |
2 files changed, 56 insertions, 0 deletions
diff --git a/src/namespace/auth.rs b/src/namespace/auth.rs new file mode 100644 index 0000000..577aa92 --- /dev/null +++ b/src/namespace/auth.rs @@ -0,0 +1,55 @@ +use std::collections::BTreeMap; +use crate::models::Credentials; +use crate::client::Client; +const ID_DOMAIN: &'static str = "id.twitch.tv"; +use crate::client::{ClientTrait, ApiRequest}; +use reqwest::Method; +use std::marker::PhantomData; + +pub struct Namespace<T> { + client: Client, + _type: PhantomData<T> +} + +impl<T> Namespace<T> { + pub fn new(client: &Client) -> Self { + Namespace { + client: client.clone(), + _type: PhantomData, + } + } +} + +pub struct Auth {} +type AuthNamespace = Namespace<Auth>; + +impl AuthNamespace { + pub fn client_credentials(self, secret: &str) + -> ApiRequest<Credentials> { + use self::client_credentials; + client_credentials(self.client, secret) + } +} + +impl Client { + pub fn auth(&self) -> AuthNamespace { + AuthNamespace::new(self) + } +} + +//TODO: Implement scopes +pub fn client_credentials(client: Client, secret: &str) + -> ApiRequest<Credentials> { + + 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/namespace/mod.rs b/src/namespace/mod.rs new file mode 100644 index 0000000..0e4a05d --- /dev/null +++ b/src/namespace/mod.rs @@ -0,0 +1 @@ +pub mod auth; |