use serde::{Deserialize, Serialize};
use std::fmt::Display;
#[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq, Eq, Hash)]
#[serde(rename_all = "camelCase", default)]
pub struct PlayParameters {
pub id: String,
pub kind: String,
}
#[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq, Eq, Hash)]
#[serde(rename_all = "camelCase", default)]
pub struct EditorialNotes {
pub name: Option<String>,
pub short: Option<String>,
pub standard: Option<String>,
pub tagline: Option<String>,
}
#[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq, Eq, Hash)]
#[serde(rename_all = "camelCase", default)]
pub struct Preview {
pub url: String,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Hash)]
pub enum AudioVariant {
#[serde(rename = "dolby-atmos")]
DolbyAtmos,
#[serde(rename = "dolby-audio")]
DolbyAudio,
#[serde(rename = "hi-res-lossless")]
HiResLossless,
#[serde(rename = "lossless")]
Lossless,
#[serde(rename = "lossy-stereo")]
LossyStereo,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Hash)]
pub enum ContentRating {
#[serde(rename = "clean")]
Clean,
#[serde(rename = "explicit")]
Explicit,
}
#[derive(Serialize, Deserialize, Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum TrackType {
#[serde(rename = "library-music-videos")]
LibraryMusicVideo,
#[serde(rename = "library-songs")]
LibrarySong,
#[serde(rename = "music-videos")]
MusicVideo,
#[serde(rename = "songs")]
Song,
}
impl Display for TrackType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let string = match self {
TrackType::LibraryMusicVideo => "library-music-videos",
TrackType::LibrarySong => "library-songs",
TrackType::MusicVideo => "music-videos",
TrackType::Song => "songs",
};
write!(f, "{}", string)
}
}