diff options
author | David Blajda <blajda@hotmail.com> | 2019-05-08 15:38:37 +0000 |
---|---|---|
committer | David Blajda <blajda@hotmail.com> | 2019-05-08 15:38:37 +0000 |
commit | 98fb79b85e3cfbb547e5340b30623511daf09ef5 (patch) | |
tree | a03bd7a95c86a92eb7510409429f50433056d7ab /src/kraken | |
parent | 0e09c2c06fc0b81f11d12985a4172c815233db17 (diff) |
:WIP: Move types to a different crate
Diffstat (limited to 'src/kraken')
-rw-r--r-- | src/kraken/endpoints.rs | 0 | ||||
-rw-r--r-- | src/kraken/mod.rs | 83 | ||||
-rw-r--r-- | src/kraken/models.rs | 79 | ||||
-rw-r--r-- | src/kraken/namespaces/clips.rs | 33 | ||||
-rw-r--r-- | src/kraken/namespaces/mod.rs | 20 | ||||
-rw-r--r-- | src/kraken/namespaces/users.rs | 32 |
6 files changed, 0 insertions, 247 deletions
diff --git a/src/kraken/endpoints.rs b/src/kraken/endpoints.rs deleted file mode 100644 index e69de29..0000000 --- a/src/kraken/endpoints.rs +++ /dev/null diff --git a/src/kraken/mod.rs b/src/kraken/mod.rs deleted file mode 100644 index 4046377..0000000 --- a/src/kraken/mod.rs +++ /dev/null @@ -1,83 +0,0 @@ -use crate::client::Client as GenericClient; -use crate::client::{Version, ClientConfig}; -use crate::client::ClientTrait; -pub use super::types; - -use crate::client::{KrakenScope, Scope}; - -mod namespaces; -pub mod models; - -#[derive(Clone)] -pub struct Client { - inner: GenericClient -} - -impl Client { - pub fn new(id: &str) -> Client { - let config = ClientConfig::default(); - Client { - inner: GenericClient::new(id, config, Version::Kraken) - } - } - - pub fn new_with_config(id: &str, config: ClientConfig) -> Client { - Client { - inner: GenericClient::new(id, config, Version::Kraken) - } - } - - pub fn authenticate(self, secret: &str) -> AuthClientBuilder { - AuthClientBuilder::new(self, secret) - } - - pub fn id<'a>(&'a self) -> &'a str { &self.inner.id() } - pub fn domain<'a>(&'a self) -> &'a str { &self.inner.domain() } - pub fn auth_domain<'a>(&'a self) -> &'a str { &self.inner.auth_domain() } - pub fn authenticated(&self) -> bool { self.inner.authenticated() } - - pub fn scopes(&self) -> Vec<KrakenScope> { - self.inner.scopes().into_iter().filter_map(|item| { - if let Scope::Kraken(scope) = item { Some(scope) } else { None } - }).collect() - } -} - -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/models.rs b/src/kraken/models.rs deleted file mode 100644 index 931f849..0000000 --- a/src/kraken/models.rs +++ /dev/null @@ -1,79 +0,0 @@ -extern crate serde_json; -extern crate chrono; -extern crate url; - -use url::Url; -use chrono::{DateTime, Utc}; -use super::types::{UserId, VideoId}; -use crate::client::PaginationTrait; - -#[derive(Debug, Deserialize, Serialize)] -pub struct User { - pub _id: String, - pub bio: String, - pub created_at: DateTime<Utc>, - pub display_name: String, - #[serde(with = "url_serde")] - pub logo: Url, - pub name: String, - #[serde(rename = "type")] - pub user_type: String, - pub updated_at: DateTime<Utc>, -} - -#[derive(Debug, Deserialize, Serialize)] -pub struct Clip { - pub slug: String, - pub tracking_id: String, - #[serde(with = "url_serde")] - pub url: Url, - #[serde(with = "url_serde")] - pub embed_url: Url, - pub embed_html: String, - pub broadcaster: UserData, - pub curator: UserData, - pub vod: Vod, - pub game: String, - pub language: String, - pub title: String, - pub views: i32, - pub duration: f32, - pub created_at: DateTime<Utc>, - pub thumbnails: Thumbnails, -} - -impl PaginationTrait for Clip { - fn cursor<'a>(&'a self) -> Option<&'a str> { None } -} - -impl PaginationTrait for User { - fn cursor<'a>(&'a self) -> Option<&'a str> { None } -} - - -#[derive(Debug, Deserialize, Serialize)] -pub struct Thumbnails { - #[serde(with = "url_serde")] - pub medium: Url, - #[serde(with = "url_serde")] - pub small: Url, - #[serde(with = "url_serde")] - pub tiny: Url, -} - -#[derive(Debug, Deserialize, Serialize)] -pub struct UserData { - pub id: UserId, - pub name: String, - pub display_name: String, - #[serde(with = "url_serde")] - pub channel_url: Url, - pub logo: String, -} - -#[derive(Debug, Deserialize, Serialize)] -pub struct Vod { - pub id: VideoId, - #[serde(with = "url_serde")] - pub url: Url, -} diff --git a/src/kraken/namespaces/clips.rs b/src/kraken/namespaces/clips.rs deleted file mode 100644 index edde25b..0000000 --- a/src/kraken/namespaces/clips.rs +++ /dev/null @@ -1,33 +0,0 @@ -use std::collections::BTreeMap; -use super::super::models::{Clip}; -use super::super::Client; -use crate::client::{RatelimitKey, ClientTrait, ApiRequest}; -use reqwest::Method; -use super::Namespace; - -pub struct Clips {} -type ClipsNamespace = Namespace<Clips>; - -impl ClipsNamespace { - pub fn clip(self, id: &str) -> ApiRequest<Clip> { - use self::clip; - clip(self.client, id) - } -} - -impl Client { - - pub fn clips(&self) -> ClipsNamespace { - ClipsNamespace::new(self) - } -} - -pub fn clip(client: Client, id: &str) - -> ApiRequest<Clip> -{ - let client = client.inner; - let url = String::from("https://") + client.domain() + "/kraken/clips/" + id; - let params = BTreeMap::new(); - - ApiRequest::new(url, params, client, Method::GET, Some(RatelimitKey::Default)) -} diff --git a/src/kraken/namespaces/mod.rs b/src/kraken/namespaces/mod.rs deleted file mode 100644 index d8a065f..0000000 --- a/src/kraken/namespaces/mod.rs +++ /dev/null @@ -1,20 +0,0 @@ -use std::marker::PhantomData; -pub use super::models; -pub use super::Client; - -pub mod clips; -pub mod users; - -pub struct Namespace<T> { - client: Client, - _type: PhantomData<T> -} - -impl<T> Namespace<T> { - pub fn new(client: &Client) -> Self { - Namespace { - client: client.clone(), - _type: PhantomData, - } - } -} diff --git a/src/kraken/namespaces/users.rs b/src/kraken/namespaces/users.rs deleted file mode 100644 index d4adb8e..0000000 --- a/src/kraken/namespaces/users.rs +++ /dev/null @@ -1,32 +0,0 @@ -use std::collections::BTreeMap; -use super::super::models::{User}; -use super::super::Client; -use crate::client::{RatelimitKey, ClientTrait, ApiRequest}; -use reqwest::Method; -use super::Namespace; - -pub struct Users {} -type UsersNamespace = Namespace<Users>; - -impl UsersNamespace { - pub fn by_id(self, id: &str) -> ApiRequest<User> { - use self::by_id; - by_id(self.client, id) - } -} - -impl Client { - pub fn users(&self) -> UsersNamespace { - UsersNamespace::new(self) - } -} - -pub fn by_id(client: Client, id: &str) - -> ApiRequest<User> -{ - let client = client.inner; - let url = String::from("https://") + client.domain() + "/kraken/users/" + id; - let params = BTreeMap::new(); - - ApiRequest::new(url, params, client, Method::GET, Some(RatelimitKey::Default)) -} |