/
example.pl
75 lines (63 loc) · 3.4 KB
/
example.pl
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
module MyApp;
use Faz::Request;
use Faz::URI;
use Faz::Application;
use Faz::Controller;
use Faz::Action::Root;
use Faz::Action::Chained;
use Faz::Action::Public;
my $app = Faz::Application.new(:dispatcher(Faz::Dispatcher.new()));
my $ctrl = Faz::Controller.new();
my $root = Faz::Action::Chained.new( :parent(0),
:controller($ctrl),
:private-name('(root)'),
:regex(/^ /),
:begin-closure({ say "root - begin" }),
:execute-closure({ say "root - execute " }),
:finish-closure({ say "root - finish" }) );
$app.register-action($root);
my $blog = Faz::Action::Chained.new( :parent($root),
:controller($ctrl),
:private-name('(root)/blog/*'),
:regex(/ \/blog\/(\w+) /),
:begin-closure(-> $name { say "blog $name - begin " }),
:execute-closure(-> $name { say "blog $name - execute " }),
:finish-closure(-> $name { say "blog $name - finish" }) );
$app.register-action($blog);
my $index = Faz::Action::Public.new( :parent($root),
:controller($ctrl),
:private-name('(root)/blog/*'),
:regex(/ \/ $/),
:begin-closure({ say "index - begin " }),
:execute-closure({ say "index - execute " }),
:finish-closure({ say "index - finish" }) );
$app.register-action($index);
my $viewblog1 = Faz::Action::Public.new( :parent($blog),
:controller($ctrl),
:private-name('(root)/blog/*/'),
:regex(/ \/? $/),
:begin-closure({ say "viewblog1 - begin" }),
:execute-closure({ say "viewblog1 - execute" }),
:finish-closure({ say "viewblog1 - finish" }) );
$app.register-action($viewblog1);
my $viewblog = Faz::Action::Public.new( :parent($blog),
:controller($ctrl),
:private-name('(root)/blog/*/'),
:regex(/ \/ (\w+) \/? $/),
:begin-closure(-> $name { say "viewblog $name - begin" }),
:execute-closure( -> $name { say "viewblog $name " ~ $*request.params<test> ~ " - execute" }),
:finish-closure(-> $name { say "viewblog $name - finish" }) );
$app.register-action($viewblog);
my $uri;
my $request;
my $response = 1;
$uri = Faz::URI.new(:path('/blog/faz'));
$request = Faz::Request.new(:uri($uri), :params({ :test<"ok!"> }) );
$app.handle($request,$response);
$uri = Faz::URI.new(:path('/blog/faz/bla'));
$request = Faz::Request.new(:uri($uri), :params({ :test<"ok!"> }) );
$app.handle($request,$response);
$uri = Faz::URI.new(:path(''));
$request = Faz::Request.new(:uri($uri), :params({ :test<"ok!"> }) );
$app.handle($request,$response);
1;