diff options
Diffstat (limited to 'lib/App/MediaControl.rakumod')
-rw-r--r-- | lib/App/MediaControl.rakumod | 35 |
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(); + } +} |