summaryrefslogtreecommitdiff
path: root/bin/ultramarine
blob: b98c358a395e30f920ce07833a4ad8b0b39f5246 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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 <rest *> => $ultramarine_rest;
}
 
my Cro::Service $um = Cro::HTTP::Server.new(
    :host<localhost>,
    :port<8080>,
    application => $ultramarine,
);
 
$um.start;
 
react whenever signal(SIGINT{
    $um.stop;
    exit;
}