youtube_api/models/
mod.rs1use serde::{Serialize, Deserialize};
2
3mod metadata;
4mod search;
5mod playlists;
6mod snippet;
7
8pub use self::metadata::*;
9pub use self::search::*;
10pub use self::playlists::*;
11pub use self::snippet::*;
12
13#[derive(Debug, Serialize, Deserialize)]
14#[serde(rename_all = "camelCase")]
15pub struct Response<T> {
16 pub kind: String,
17 pub etag: String,
18 pub next_page_token: Option<String>,
19 pub prev_page_token: Option<String>,
20 pub region_code: Option<String>,
21 pub page_info: PageInfo,
22 pub items: Vec<T>
23}
24
25#[derive(Debug, Serialize, Deserialize)]
26#[serde(rename_all = "camelCase")]
27pub struct PageInfo {
28 pub total_results: u64,
29 pub results_per_page: u64,
30}
31
32#[derive(Clone, Debug, Serialize, Deserialize)]
33#[serde(rename_all = "camelCase", tag = "kind")]
34pub enum Id {
35 #[serde(rename = "youtube#video")]
36 VideoId {
37 #[serde(rename = "videoId")]
38 video_id: String
39 },
40 #[serde(rename = "youtube#channel")]
41 ChannelId {
42 #[serde(rename = "channelId")]
43 channel_id: String
44 },
45 #[serde(rename = "youtube#playlist")]
46 PlaylistId {
47 #[serde(rename = "playlistId")]
48 playlist_id: String
49 },
50}
51
52impl Id {
53 pub fn into_inner(self) -> String {
54 match self {
55 Id::VideoId { video_id } => video_id,
56 Id::ChannelId { channel_id } => channel_id,
57 Id::PlaylistId { playlist_id } => playlist_id,
58 }
59 }
60}