feat: add music charts

This commit is contained in:
ThetaDev 2022-12-01 12:56:58 +01:00
parent e063c04821
commit f20ea693a6
19 changed files with 128651 additions and 42 deletions

View file

@ -0,0 +1,60 @@
use serde::Deserialize;
use serde_with::{rust::deserialize_ignore_any, serde_as, VecSkipError};
use crate::param::Country;
use super::{music_item::MusicCarouselShelf, ContentsRenderer, SectionList, Tab};
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct MusicCharts {
pub contents: Contents,
pub framework_updates: Option<FrameworkUpdates>,
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct Contents {
pub single_column_browse_results_renderer: ContentsRenderer<Tab<SectionList<ItemSection>>>,
}
#[serde_as]
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) enum ItemSection {
MusicCarouselShelfRenderer(Box<MusicCarouselShelf>),
#[serde(other, deserialize_with = "deserialize_ignore_any")]
None,
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct FrameworkUpdates {
pub entity_batch_update: EntityBatchUpdate,
}
#[serde_as]
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct EntityBatchUpdate {
#[serde_as(as = "VecSkipError<_>")]
pub mutations: Vec<CountryOptionMutation>,
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct CountryOptionMutation {
pub payload: CountryOptionPayload,
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct CountryOptionPayload {
pub music_form_boolean_choice: CountryOption,
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct CountryOption {
pub opaque_token: Country,
}