summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Blajda <blajda@hotmail.com>2018-12-27 22:26:02 +0000
committerDavid Blajda <blajda@hotmail.com>2018-12-27 22:26:02 +0000
commit767d4bd2e108b5e735e2fa6786c83af394959f6c (patch)
treead7700912404ce7ad9862b950605ee00618eb645
parent678e3d3f28cb8594204dc5e2b7597ae66a4582c7 (diff)
Shim AuthClientBuilder for helix and kraken clients
-rw-r--r--src/helix/mod.rs45
-rw-r--r--src/kraken/mod.rs44
2 files changed, 87 insertions, 2 deletions
diff --git a/src/helix/mod.rs b/src/helix/mod.rs
index 8fbca9f..53a4ffb 100644
--- a/src/helix/mod.rs
+++ b/src/helix/mod.rs
@@ -2,10 +2,10 @@ pub mod models;
pub mod namespaces;
use crate::client::Client as GenericClient;
-use crate::client::AuthClientBuilder;
use crate::client::Version;
use crate::client::ClientTrait;
+/*
#[derive(PartialEq, Hash, Eq, Clone)]
pub enum Scope {
AnalyticsReadExtensions,
@@ -17,6 +17,8 @@ pub enum Scope {
UserReadBroadcast,
UserReadEmail,
}
+*/
+use crate::client::Scope;
#[derive(Clone)]
pub struct Client {
@@ -31,6 +33,45 @@ impl Client {
}
pub fn authenticate(self, secret: &str) -> AuthClientBuilder {
- AuthClientBuilder::new(self.inner, secret)
+ AuthClientBuilder::new(self, secret)
+ }
+}
+
+use crate::client::AuthClientBuilder as GenericAuthClientBuilder;
+
+pub struct AuthClientBuilder {
+ inner: GenericAuthClientBuilder,
+}
+
+impl AuthClientBuilder {
+ pub fn new(client: Client, secret: &str) -> AuthClientBuilder {
+ AuthClientBuilder {
+ inner: GenericAuthClientBuilder::new(client.inner, secret),
+ }
+ }
+
+ pub fn build(self) -> Client {
+ let client = self.inner.build();
+ Client {
+ inner: client
+ }
+ }
+
+ pub fn scope(self, scope: Scope) -> AuthClientBuilder {
+ AuthClientBuilder {
+ inner: self.inner.scope(scope)
+ }
+ }
+
+ pub fn scopes(self, scopes: Vec<Scope>) -> AuthClientBuilder {
+ AuthClientBuilder {
+ inner: self.inner.scopes(scopes)
+ }
+ }
+
+ pub fn token(self, token: &str) -> AuthClientBuilder {
+ AuthClientBuilder {
+ inner: self.inner.token(token)
+ }
}
}
diff --git a/src/kraken/mod.rs b/src/kraken/mod.rs
index 0201295..fbec045 100644
--- a/src/kraken/mod.rs
+++ b/src/kraken/mod.rs
@@ -16,4 +16,48 @@ impl Client {
inner: GenericClient::new(id, Version::Kraken)
}
}
+
+ pub fn authenticate(self, secret: &str) -> AuthClientBuilder {
+ AuthClientBuilder::new(self, secret)
+ }
+}
+
+use crate::client::Scope;
+use crate::client::AuthClientBuilder as GenericAuthClientBuilder;
+
+pub struct AuthClientBuilder {
+ inner: GenericAuthClientBuilder,
+}
+
+impl AuthClientBuilder {
+ pub fn new(client: Client, secret: &str) -> AuthClientBuilder {
+ AuthClientBuilder {
+ inner: GenericAuthClientBuilder::new(client.inner, secret),
+ }
+ }
+
+ pub fn build(self) -> Client {
+ let client = self.inner.build();
+ Client {
+ inner: client
+ }
+ }
+
+ pub fn scope(self, scope: Scope) -> AuthClientBuilder {
+ AuthClientBuilder {
+ inner: self.inner.scope(scope)
+ }
+ }
+
+ pub fn scopes(self, scopes: Vec<Scope>) -> AuthClientBuilder {
+ AuthClientBuilder {
+ inner: self.inner.scopes(scopes)
+ }
+ }
+
+ pub fn token(self, token: &str) -> AuthClientBuilder {
+ AuthClientBuilder {
+ inner: self.inner.token(token)
+ }
+ }
}