tubest/common/src/lib.rs
2023-11-12 17:55:21 -08:00

48 lines
1.3 KiB
Rust

use std::time::Duration;
use serde::{Deserialize, Serialize};
pub const PROG_NAME: &str = "tubest";
const DEFAULT_SEEK: Duration = Duration::from_secs(30);
#[derive(Serialize, Deserialize)]
pub enum Action {
Media(MediaAction),
}
#[derive(Serialize, Deserialize)]
pub enum MediaAction {
Enqueue {
path: String,
replace: bool,
},
Pause,
Unpause,
FastForward(Duration),
Rewind(Duration),
Next,
Stop,
}
impl Action {
pub fn from_line(line: &str) -> Self {
let split: Vec<&str> = line.split_whitespace().collect();
match &split[..] {
["pause", ..] => Action::Media(MediaAction::Pause),
["unpause", ..] => Action::Media(MediaAction::Unpause),
["rewind", ..] => {
if split.len() > 1 {
// TODO
}
Action::Media(MediaAction::Rewind(DEFAULT_SEEK))
},
["forward", ..] => {
// TODO: as above
Action::Media(MediaAction::FastForward(DEFAULT_SEEK))
},
["next" | "skip", ..] => Action::Media(MediaAction::Next),
["stop", ..] => Action::Media(MediaAction::Stop),
_ => Action::Media(MediaAction::Enqueue { path: line.to_string(), replace: true }),
}
}
}