Skip to content

Commit

Permalink
🎉 Allow changing volume without interrupting stream
Browse files Browse the repository at this point in the history
  • Loading branch information
LinusU committed Oct 25, 2021
1 parent d71aedc commit 3c25888
Show file tree
Hide file tree
Showing 4 changed files with 279 additions and 64 deletions.
194 changes: 192 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ rust-version = "1.56"
[dependencies]
docopt = "1"
log = "^0.4.11"
raop_play = { git = "https://github.com/LinusU/rust-raop-player" }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
stderrlog = "^0.5.1"
Expand Down
13 changes: 6 additions & 7 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,19 @@ struct Args {
#[derive(Clone, Serialize, Deserialize, Debug)]
struct GetResult {
device: Option<String>,
volume: Option<u16>,
volume: Option<u8>,
devices: Vec<discovery::Device>,
}

#[derive(Clone, Serialize, Deserialize, Debug)]
struct PutInput {
device: Option<String>,
volume: Option<u16>,
volume: Option<u8>,
}

async fn api_get(scanner: discovery::Scanner, streamer: streaming::Streamer) -> Result<impl warp::Reply, warp::Rejection> {
let addr = streamer.addr();
let volume = streamer.volume();
let addr = streamer.addr().await;
let volume = streamer.volume().await;

let source = scanner.read_devices();
let device = source.iter().find(|(_, device)| Some(device.addr) == addr).map(|(id, _)| id.to_owned());
Expand All @@ -52,8 +52,7 @@ async fn api_put(input: PutInput, scanner: discovery::Scanner, streamer: streami

let addr = input.device.and_then(|id| scanner.device(&id)).map(|device| device.addr);

// FIXME: Handle errors!
streamer.update(addr, input.volume).unwrap();
streamer.update(addr, input.volume).await;

Ok("test")
}
Expand All @@ -75,7 +74,7 @@ async fn main() {
let scanner = discovery::Scanner::new();
let scanner = warp::any().map(move || scanner.clone());

let streamer = streaming::Streamer::new(args.flag_d);
let streamer = streaming::Streamer::new();
let streamer = warp::any().map(move || streamer.clone());

let json_body = warp::body::content_length_limit(1024 * 16).and(warp::body::json());
Expand Down
Loading

0 comments on commit 3c25888

Please sign in to comment.