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
use serde_derive::{Deserialize, Serialize};

use crate::models::image_ref::ImageRef;
use crate::models::GMusicListResponse;

#[derive(Debug, Serialize)]
pub struct GetAllPlaylistsRequest;

pub type GetAllPlaylistsResponse = GMusicListResponse<Playlist>;

#[derive(Debug, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct Playlist {
    pub id: String,
    pub name: String,
    pub deleted: Option<bool>,
    #[serde(rename = "type")]
    pub playlist_type: PlaylistType,
    pub last_modified_timestamp: Option<String>,
    pub recent_timestamp: Option<String>,
    pub share_token: String,
    pub owner_profile_photo_url: Option<String>,
    pub owner_name: Option<String>,
    pub access_controlled: Option<bool>,
    pub share_state: Option<PlaylistShareState>,
    pub creation_timestamp: Option<String>,
    #[serde(default)]
    pub album_art_ref: Vec<ImageRef>,
    pub description: Option<String>,
    pub explicit_type: Option<String>,
    pub content_type: Option<String>,
}

#[derive(Debug, Deserialize, Clone)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum PlaylistType {
    Magic,
    Shared,
    UserGenerated,
}

#[derive(Debug, Deserialize, Clone)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum PlaylistShareState {
    Private,
    Public,
}

impl GetAllPlaylistsRequest {
    pub fn new() -> GetAllPlaylistsRequest {
        GetAllPlaylistsRequest
    }
}