use v6.d; use Cro::HTTP::Server; use Cro::HTTP::Router; use Vlc::Client; class Vlc::App { has Vlc::Client $.vlc is required; has Int $.port = 8080; has Cro::Service $!service handles ; 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(); } }