From 98fb79b85e3cfbb547e5340b30623511daf09ef5 Mon Sep 17 00:00:00 2001 From: David Blajda Date: Wed, 8 May 2019 15:38:37 +0000 Subject: :WIP: Move types to a different crate --- src/kraken/endpoints.rs | 0 src/kraken/mod.rs | 83 ------------------------------------------ src/kraken/models.rs | 79 ---------------------------------------- src/kraken/namespaces/clips.rs | 33 ----------------- src/kraken/namespaces/mod.rs | 20 ---------- src/kraken/namespaces/users.rs | 32 ---------------- 6 files changed, 247 deletions(-) delete mode 100644 src/kraken/endpoints.rs delete mode 100644 src/kraken/mod.rs delete mode 100644 src/kraken/models.rs delete mode 100644 src/kraken/namespaces/clips.rs delete mode 100644 src/kraken/namespaces/mod.rs delete mode 100644 src/kraken/namespaces/users.rs (limited to 'src/kraken') diff --git a/src/kraken/endpoints.rs b/src/kraken/endpoints.rs deleted file mode 100644 index e69de29..0000000 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 { - 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) -> 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, - 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, -} - -#[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, - 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; - -impl ClipsNamespace { - pub fn clip(self, id: &str) -> ApiRequest { - 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 -{ - 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 { - client: Client, - _type: PhantomData -} - -impl Namespace { - 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; - -impl UsersNamespace { - pub fn by_id(self, id: &str) -> ApiRequest { - 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 -{ - 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)) -} -- cgit v1.2.3