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;
}