diff options
author | David Blajda <blajda@hotmail.com> | 2018-12-18 05:06:05 +0000 |
---|---|---|
committer | David Blajda <blajda@hotmail.com> | 2018-12-18 05:06:05 +0000 |
commit | d34229bc3e495d2927415f408b18aec51a4574e2 (patch) | |
tree | 42f892b93d1459a55b52ccb009ddafd9166e0a8b /src/helix/namespaces/auth.rs | |
parent | 21ebcdb53db06557fe73e195742c038ed91ef331 (diff) |
Implement auth client and auth barrier
Diffstat (limited to 'src/helix/namespaces/auth.rs')
-rw-r--r-- | src/helix/namespaces/auth.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/helix/namespaces/auth.rs b/src/helix/namespaces/auth.rs new file mode 100644 index 0000000..8ad7956 --- /dev/null +++ b/src/helix/namespaces/auth.rs @@ -0,0 +1,43 @@ +use futures::future::Future; +use std::collections::BTreeMap; +use super::super::models::Credentials; +use super::super::Client; +const ID_DOMAIN: &'static str = "id.twitch.tv"; +use super::super::Namespace; + +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) + } +} + +use super::super::ApiRequest; +use reqwest::Method; + +//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".to_owned(), client.id().to_owned()); + params.insert("client_secret".to_owned(), secret.to_owned()); + params.insert("grant_type".to_owned(), "client_credentials".to_owned()); + params.insert("scope".to_owned(), "".to_owned()); + + ApiRequest::new(url, params, client, Method::POST) +} |