#!/usr/bin/env perl6 use v6.d.PREVIEW; use Ultramarine::Model::License; use Ultramarine::Model::Users; use Ultramarine::Model::DirScanner; use Ultramarine::Model::DB::SQLite; use Ultramarine::Model::MusicFile; use Ultramarine::Model::Collection; use Ultramarine::Middleware::Authentication; use Ultramarine::Middleware::Authorisation; use Ultramarine::Middleware::SetContentType; use Ultramarine::Serialiser::XML; use Ultramarine::Serialiser::JSON; use Ultramarine::Controller; use Ultramarine::Server; my $users = Ultramarine::Model::Users.new( accounts=> { me => 'sesame' }, ); my $controller = Ultramarine::Controller.new( license => Ultramarine::Model::License.new, collection => Ultramarine::Model::Collection.new( db => Ultramarine::Model::DB::SQLite.new( :db-path('/tmp/songs.sqlite'), ), dirscan => Ultramarine::Model::DirScanner.new( :root('/mnt/music/Alanis Morissette'), ), file-class => Ultramarine::Model::MusicFile, ), authorisation => Ultramarine::Middleware::Authorisation.new, ).routes; my $server = Ultramarine::Server.new( :host<192.168.1.145>, :port<8080>, :$controller, authentication => Ultramarine::Middleware::Authentication.new(:$users), serialisers => [ Ultramarine::Serialiser::XML.new, Ultramarine::Serialiser::JSON.new, ], set-content-type => Ultramarine::Middleware::SetContentType.new, do-trace => True, ).server; $server.start; say "ready"; react whenever signal(SIGINT) { $server.stop; exit; }