use strum_macros::Display;
use crate::controllers::script_controller::ScriptController;
use crate::models::application_data::ApplicationData;
use crate::models::track::Track;
pub struct AppleMusic;
impl AppleMusic {
pub fn get_application_data() -> ApplicationData {
ScriptController::execute_script::<ApplicationData>(include_str!("./scripts/application.js")).unwrap()
}
pub fn get_current_track() -> Track {
ScriptController::execute_script::<Track>(include_str!("./scripts/current_track.js")).unwrap()
}
pub fn execute(command: AppCommands) {
ScriptController::execute(command);
}
}
#[derive(Display)]
#[strum(serialize_all = "lowercase")]
pub enum AppCommands {
QUIT, RUN, PLAY, PAUSE, RESUME,
#[strum(serialize = "backTrack")]
BACKTRACK,
#[strum(serialize = "fastForward")]
FASTFORWARD,
#[strum(serialize = "nextTrack")]
NEXTTRACK, PLAYPAUSE,
#[strum(serialize = "previousTrack")]
PREVIOUSTRACK,
REWIND, STOP,
}