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
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
//! [User API](https://developers.deezer.com/api/user)
use crate::models::DeezerObject;
#[warn(missing_docs)]
use serde::{Deserialize, Serialize};

/// Contains all the information provided for a User.
///
/// # Examples
///
/// You can query a user by id via the [`DeezerObject::get()`] method:
///
/// ```rust
/// # use deezer::models::*;
/// # use deezer::DeezerError;
/// # #[tokio::main]
/// # async fn main() -> Result<(), DeezerError> {
/// let user = User::get(12).await?.unwrap();
/// # assert_eq!(user.id, 12);
/// # Ok(())
/// # }
/// ```
///
/// Or you can use [`DeezerClient::user()`](crate::DeezerClient::user()):
///
/// ```rust
/// # use deezer::models::*;
/// # use deezer::{DeezerClient, DeezerError};
/// # #[tokio::main]
/// # async fn main() -> Result<(), DeezerError> {
/// let deezer = DeezerClient::new();
/// let user = deezer.user(12).await?.unwrap();
/// # assert_eq!(user.id, 12);
/// # Ok(())
/// # }
///
/// ```
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct User {
    /// The user's Deezer ID
    pub id: u64,

    /// The user's Deezer nickname
    pub name: String,

    /// The user's last name
    #[serde(default)]
    #[serde(rename = "lastname")]
    pub last_name: String,

    /// The user's first name
    #[serde(default)]
    #[serde(rename = "firstname")]
    pub first_name: String,

    /// The user's email
    #[serde(default)]
    pub email: String,

    /// The user's status
    #[serde(default)]
    pub status: u64,

    /// The user's birthday
    #[serde(default)]
    pub birthday: String,

    /// The user's inscription date
    #[serde(default)]
    pub inscription_date: String,

    /// The user's gender : F or M
    #[serde(default)]
    pub gender: String,

    /// The url of the profil for the user on Deezer
    pub link: String,

    /// The url of the user's profile picture.
    pub picture: String,

    /// The url of the user's profile picture in size small.
    pub picture_small: String,

    /// The url of the user's profile picture in size medium.
    pub picture_medium: String,

    /// The url of the user's profile picture in size big.
    pub picture_big: String,

    /// The url of the user's profile picture in size xl.
    pub picture_xl: String,

    /// The user's country
    pub country: String,

    /// The user's language
    #[serde(default)]
    pub lang: String,

    /// If the user is a kid or not
    #[serde(default)]
    pub is_kid: bool,

    /// API Link to the flow of this user
    #[serde(rename = "tracklist")]
    pub track_list: String,
}

impl DeezerObject for User {
    fn get_api_url(id: u64) -> String {
        format!("user/{}", id)
    }
}