From db1f46d1af765dfa5cca3d23a9e7246d4966ccd8 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sat, 16 Dec 2017 20:14:08 +0000 Subject: rough server w/ serialisation --- bin/ultramarine | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 bin/ultramarine (limited to 'bin/ultramarine') diff --git a/bin/ultramarine b/bin/ultramarine new file mode 100644 index 0000000..b98c358 --- /dev/null +++ b/bin/ultramarine @@ -0,0 +1,46 @@ +#!/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; +} -- cgit v1.2.3