summaryrefslogtreecommitdiff
path: root/src/helix/namespaces/auth.rs
diff options
context:
space:
mode:
authorDavid Blajda <blajda@hotmail.com>2018-12-18 05:06:05 +0000
committerDavid Blajda <blajda@hotmail.com>2018-12-18 05:06:05 +0000
commitd34229bc3e495d2927415f408b18aec51a4574e2 (patch)
tree42f892b93d1459a55b52ccb009ddafd9166e0a8b /src/helix/namespaces/auth.rs
parent21ebcdb53db06557fe73e195742c038ed91ef331 (diff)
Implement auth client and auth barrier
Diffstat (limited to 'src/helix/namespaces/auth.rs')
-rw-r--r--src/helix/namespaces/auth.rs43
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)
+}