From 767d4bd2e108b5e735e2fa6786c83af394959f6c Mon Sep 17 00:00:00 2001 From: David Blajda Date: Thu, 27 Dec 2018 22:26:02 +0000 Subject: Shim AuthClientBuilder for helix and kraken clients --- src/helix/mod.rs | 45 +++++++++++++++++++++++++++++++++++++++++++-- src/kraken/mod.rs | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 2 deletions(-) (limited to 'src') 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) -> 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) -> AuthClientBuilder { + AuthClientBuilder { + inner: self.inner.scopes(scopes) + } + } + + pub fn token(self, token: &str) -> AuthClientBuilder { + AuthClientBuilder { + inner: self.inner.token(token) + } + } } -- cgit v1.2.3