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 'index.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();
}
}