diff options
author | David Blajda <blajda@hotmail.com> | 2018-12-27 22:26:02 +0000 |
---|---|---|
committer | David Blajda <blajda@hotmail.com> | 2018-12-27 22:26:02 +0000 |
commit | 767d4bd2e108b5e735e2fa6786c83af394959f6c (patch) | |
tree | ad7700912404ce7ad9862b950605ee00618eb645 | |
parent | 678e3d3f28cb8594204dc5e2b7597ae66a4582c7 (diff) |
Shim AuthClientBuilder for helix and kraken clients
-rw-r--r-- | src/helix/mod.rs | 45 | ||||
-rw-r--r-- | src/kraken/mod.rs | 44 |
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) + } + } } |