use serde::de::{Deserialize, Deserializer};
use std::result;
mod album;
mod artist;
mod playlist;
pub use self::album::{Album, AlbumInfo, ListType};
pub use self::artist::{Artist, ArtistInfo};
pub use self::playlist::Playlist;
#[derive(Debug)]
pub struct MusicFolder {
pub id: usize,
pub name: String,
_private: bool,
}
impl<'de> Deserialize<'de> for MusicFolder {
fn deserialize<D>(de: D) -> result::Result<Self, D::Error>
where
D: Deserializer<'de>,
{
#[derive(Deserialize)]
struct _MusicFolder {
id: String,
name: String,
}
let raw = _MusicFolder::deserialize(de)?;
Ok(MusicFolder {
id: raw.id.parse().unwrap(),
name: raw.name,
_private: false,
})
}
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Genre {
pub name: String,
pub song_count: u64,
pub album_count: u64,
#[serde(default)]
_private: bool,
}