aboutsummaryrefslogtreecommitdiff
path: root/lib/App/MediaControl.rakumod
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2021-12-22 14:03:30 +0000
committerdakkar <dakkar@thenautilus.net>2021-12-22 14:03:30 +0000
commit819187730a5b74a52ff1895625cf7b3c94c6ad9b (patch)
treef4d3a00bfd1e901e4e952e87b9d076669f439428 /lib/App/MediaControl.rakumod
parentconfig file (diff)
downloadmedia-control-819187730a5b74a52ff1895625cf7b3c94c6ad9b.tar.gz
media-control-819187730a5b74a52ff1895625cf7b3c94c6ad9b.tar.bz2
media-control-819187730a5b74a52ff1895625cf7b3c94c6ad9b.zip
some renaming
Diffstat (limited to 'lib/App/MediaControl.rakumod')
-rw-r--r--lib/App/MediaControl.rakumod35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/App/MediaControl.rakumod b/lib/App/MediaControl.rakumod
new file mode 100644
index 0000000..bd4a2c9
--- /dev/null
+++ b/lib/App/MediaControl.rakumod
@@ -0,0 +1,35 @@
+use v6.d;
+use Cro::HTTP::Server;
+use Cro::HTTP::Router;
+use Vlc::Client;
+use Lirc::Client;
+
+class App::MediaControl {
+ has Vlc::Client $.vlc is required;
+ has Lirc::Client $.lirc is required;
+ has Int $.port = 8080;
+ has Cro::Service $!service handles <stop>;
+
+ method start() {
+ my $application = route {
+ resources-from %?RESOURCES;
+
+ get -> { resource 'vlc.html' }
+
+ post -> 'play' { await self.vlc.command('pl_play') }
+ post -> 'pause' { await self.vlc.command('pl_pause') }
+ post -> 'stop' { await self.vlc.command('pl_stop') }
+
+ get -> 'status' {
+ my $status = await self.vlc.status();
+ content 'application/json', $status;
+ }
+ };
+
+ $!service = Cro::HTTP::Server.new(
+ :port(self.port), :$application,
+ );
+
+ return $!service.start();
+ }
+}