diff options
Diffstat (limited to 'src/helix/mod.rs')
-rw-r--r-- | src/helix/mod.rs | 45 |
1 files changed, 43 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) + } } } |