summaryrefslogtreecommitdiff
path: root/src/kraken/models.rs
blob: 5b8c30be83f78d5c161a6c09fab44e339267fd6f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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<'static>,
    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<'static>,
    #[serde(with = "url_serde")]
    pub url: Url,
}