From b44463d533ba9b789e3423d670e2ddcc32c1112c Mon Sep 17 00:00:00 2001 From: HampusM Date: Tue, 6 Sep 2022 21:40:01 +0200 Subject: feat: add getting user & playlists --- src/user.rs | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 src/user.rs (limited to 'src/user.rs') diff --git a/src/user.rs b/src/user.rs new file mode 100644 index 0000000..ee22f5a --- /dev/null +++ b/src/user.rs @@ -0,0 +1,153 @@ +//! Deezer user. + +/* +pub enum ExplicitContentLevel +{ + explicit_display, + explicit_no_recommendation, + explicit_hide, +} +*/ +use serde::Deserialize; + +use crate::creator::Creator; + +/// A Deezer user. +#[derive(Debug, Deserialize)] +pub struct User +{ + /// The user's Deezer ID + pub id: u64, + + /// The user's Deezer nickname + pub name: String, + + /// The user's last name + pub lastname: String, + + /// The user's first name + pub firstname: String, + + /// The user's email + pub email: Option, + + /// The user's status + pub status: u32, + + /// The user's birthday + pub birthday: String, + + /// The user's inscription date + pub inscription_date: String, + + /// The user's gender : F or M + pub gender: String, + + /// The String of the profil for the user on Deezer + pub link: String, + + /// The String of the user's profil picture. Add 'size' parameter to the String to + /// change size. Can be 'small', 'medium', 'big', 'xl' + pub picture: String, + + /// The String of the user's profil picture in size small. + pub picture_small: String, + + /// The String of the user's profil picture in size medium. + pub picture_medium: String, + + /// The String of the user's profil picture in size big. + pub picture_big: String, + + /// The String of the user's profil picture in size xl. + pub picture_xl: String, + + /// The user's country + pub country: String, + + /// The user's language + pub lang: String, + + /// If the user is a kid or not + pub is_kid: bool, + + /// The user's explicit content level according to his country + pub explicit_content_level: String, + + /// The user's available explicit content levels according to his country. Possible + /// values are: explicit_display, explicit_no_recommendation and explicit_hide + pub explicit_content_levels_available: Vec, + + /// API Link to the flow of this user + pub tracklist: String, + + /// Object type. + #[serde(rename = "type")] + pub object_type: String, +} + +/// A user's playlist. +#[derive(Debug, Deserialize)] +pub struct UserPlaylist +{ + /// The playlist's Deezer id + pub id: u64, + + /// The playlist's title + pub title: String, + + /// The playlist's duration (seconds) + pub duration: u64, + + /// If the playlist is public or not + pub public: bool, + + /// If the playlist is the love tracks playlist + pub is_loved_track: bool, + + /// If the playlist is collaborative or not + pub collaborative: bool, + + /// Nb tracks in the playlist + pub nb_tracks: u64, + + /// The number of playlist's fans + pub fans: u64, + + /// The url of the playlist on Deezer + pub link: String, + + /// The url of the playlist's cover. Add 'size' parameter to the url to change size. + /// Can be 'small', 'medium', 'big', 'xl' + pub picture: String, + + /// The url of the playlist's cover in size small. + pub picture_small: String, + + /// The url of the playlist's cover in size medium. + pub picture_medium: String, + + /// The url of the playlist's cover in size big. + pub picture_big: String, + + /// The url of the playlist's cover in size xl. + pub picture_xl: String, + + /// The checksum for the track list + pub checksum: String, + + /// The time when the playlist has been added + pub time_add: u64, + + /// The time when the playlist has been updated + pub time_mod: u64, + + /// The creator of the playlist. + pub creator: Creator, +} + +#[derive(Debug, Deserialize)] +pub(crate) struct UserPlaylists +{ + pub data: Vec, +} -- cgit v1.2.3-18-g5258