use super::Query;
use serde_json::json;
use std::borrow::Cow;
pub struct GetLibraryPlaylistsQuery;
impl Query for GetLibraryPlaylistsQuery {
fn header(&self) -> serde_json::Map<String, serde_json::Value> {
let serde_json::Value::Object(map) = json!({
"browseId" : "FEmusic_liked_playlists"
}) else {
unreachable!("Created a map");
};
map
}
fn path(&self) -> &str {
"browse"
}
fn params(&self) -> Option<Cow<str>> {
None
}
}
#[derive(Default)]
pub enum LibraryArtistsSortOrder {
NameAsc,
NameDesc,
MostSongs,
RecentlySaved,
#[default]
Default,
}
#[derive(Default)]
pub struct GetLibraryArtistsQuery {
sort_order: LibraryArtistsSortOrder,
}
impl Query for GetLibraryArtistsQuery {
fn header(&self) -> serde_json::Map<String, serde_json::Value> {
let serde_json::Value::Object(map) = json!({
"browseId" : "FEmusic_library_corpus_track_artists"
}) else {
unreachable!("Created a map");
};
map
}
fn path(&self) -> &str {
"browse"
}
fn params(&self) -> Option<Cow<str>> {
match self.sort_order {
LibraryArtistsSortOrder::NameAsc => Some("ggMGKgQIARAA".into()),
LibraryArtistsSortOrder::NameDesc => Some("ggMGKgQIABAB".into()),
LibraryArtistsSortOrder::MostSongs => todo!(),
LibraryArtistsSortOrder::RecentlySaved => Some("ggMGKgQIABAB".into()),
LibraryArtistsSortOrder::Default => None,
}
}
}