aboutsummaryrefslogtreecommitdiff
path: root/lib/App/MediaControl.rakumod
diff options
context:
space:
mode:
Diffstat (limited to 'lib/App/MediaControl.rakumod')
-rw-r--r--lib/App/MediaControl.rakumod27
1 files changed, 20 insertions, 7 deletions
diff --git a/lib/App/MediaControl.rakumod b/lib/App/MediaControl.rakumod
index 238ae53..e4b5024 100644
--- a/lib/App/MediaControl.rakumod
+++ b/lib/App/MediaControl.rakumod
@@ -2,20 +2,16 @@ use v6.d;
use Cro::HTTP::Server;
use Cro::HTTP::Router;
use Vlc::Client;
-use Lirc::Client;
+use Lirc::Commands;
class App::MediaControl {
has Vlc::Client $.vlc is required;
- has Lirc::Client $.lirc is required;
+ has Lirc::Commands $.lirc is required;
has Int $.port = 8080;
has Cro::Service $!service handles <stop>;
method start() {
- my $application = route {
- resources-from %?RESOURCES;
-
- get -> { resource 'index.html' }
-
+ my $vlc = route {
post -> 'play' { await self.vlc.command('pl_play') }
post -> 'pause' { await self.vlc.command('pl_pause') }
post -> 'stop' { await self.vlc.command('pl_stop') }
@@ -24,11 +20,28 @@ class App::MediaControl {
my $status = await self.vlc.status();
content 'application/json', $status;
}
+ }
+
+ my $ir = route {
+ post -> $thing, $arg {
+ await self.lirc.send($thing, $arg);
+ }
+ }
+
+ my $application = route {
+ resources-from %?RESOURCES;
+
+ get -> { resource 'index.html' }
+ get -> 'ir.png' { resource 'ir.png' }
+ get -> 'ir.webmanifest' { resource 'ir.webmanifest' }
+
+ include :$vlc, :$ir;
around -> &handler {
handler();
CATCH {
default {
+ note "BOOM $_";
response.status = 500;
content 'application/json', %( error => "$_" );
}