#!/usr/bin/env perl6 use v6.d.PREVIEW; use Cro::HTTP::Router; use Cro::HTTP::Server; use Ultramarine::Model::Users; use Ultramarine::Middleware::Authentication; use Ultramarine::Middleware::Authorisation; use Ultramarine::Middleware::SetContentType; use Ultramarine::Serialiser::XML; sub respond(*@body) { response.status = 200; response.set-body(@body); } my $users = Ultramarine::Model::Users.new( accounts=>{me=>'sesame'}, ); my $ultramarine_rest = route { before Ultramarine::Middleware::Authentication.new(:$users); before Ultramarine::Middleware::Authorisation; after Ultramarine::Middleware::SetContentType; get -> 'ping.view' { respond [] } }; my $ultramarine = route { body-serializer Ultramarine::Serialiser::XML.new; delegate => $ultramarine_rest; } my Cro::Service $um = Cro::HTTP::Server.new( :host, :port<8080>, application => $ultramarine, ); $um.start; react whenever signal(SIGINT) { $um.stop; exit; }