From cb1b144e48ee357a76f551433d4886f092d259c8 Mon Sep 17 00:00:00 2001 From: David Blajda Date: Thu, 27 Dec 2018 04:46:10 +0000 Subject: Use a generic client for both helix and kraken --- src/helix/models.rs | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) (limited to 'src/helix/models.rs') diff --git a/src/helix/models.rs b/src/helix/models.rs index 4124fd2..47a1288 100644 --- a/src/helix/models.rs +++ b/src/helix/models.rs @@ -3,11 +3,9 @@ extern crate chrono; use url::Url; use chrono::{DateTime, Utc}; -use super::types::{UserId, VideoId, ChannelId}; +use crate::types::{UserId, VideoId, ChannelId}; -pub trait PaginationTrait { - fn cursor<'a>(&'a self) -> &'a Option; -} +use crate::client::PaginationTrait; #[derive(Debug, Deserialize)] pub struct DataContainer { @@ -15,15 +13,25 @@ pub struct DataContainer { } impl PaginationTrait for DataContainer { - fn cursor<'a>(&'a self) -> &'a Option { &None } + fn cursor<'a>(&'a self) -> Option<&'a str> { None } } impl PaginationTrait for PaginationContainer { - fn cursor<'a>(&'a self) -> &'a Option { &self.pagination } + fn cursor<'a>(&'a self) -> Option<&'a str> { + match self.pagination.as_ref() { + Some(cursor) => { + match cursor.cursor.as_ref() { + Some(cursor) => Some(cursor), + None => None, + } + }, + None => None + } + } } impl PaginationTrait for Credentials { - fn cursor<'a>(&'a self) -> &'a Option { &None } + fn cursor<'a>(&'a self) -> Option<&'a str> { None } } #[derive(Debug, Deserialize)] @@ -37,17 +45,6 @@ pub struct Cursor { pub cursor: Option } - -#[derive(Debug, Deserialize)] -pub struct Credentials { - pub access_token: String, - pub refresh_token: Option, - pub expires_in: u32, - pub scope: Option>, - pub token_type: String, -} - - #[derive(Debug, Deserialize)] pub struct Video { pub id: VideoId, @@ -107,3 +104,12 @@ pub struct Clip { pub thumbnail_url: Url, pub view_count: i32, } + +#[derive(Debug, Deserialize)] +pub struct Credentials { + pub access_token: String, + pub refresh_token: Option, + pub expires_in: u32, + pub scope: Option>, + pub token_type: String, +} -- cgit v1.2.3