use Moose;
use MooseX::MethodAttributes;
+ use Types::Standard qw/slurpy/;
use MyApp::Types qw/Tuple Int Str StrMatch ArrayRef UserId User Heart/;
extends 'Catalyst::Controller';
$c->res->body("name: $user->{name}, age: $user->{age}");
}
+ sub stringy_enum :Local Args('Int',Int) {
+ my ($self, $c) = @_;
+ $c->res->body('enum');
+ }
+
sub an_int :Local Args(Int) {
my ($self, $c, $int) = @_;
$c->res->body('an_int');
}
sub many_ints :Local Args(ArrayRef[Int]) {
- my ($self, $c, $int) = @_;
+ my ($self, $c, @ints) = @_;
$c->res->body('many_ints');
}
$c->res->body('tuple');
}
+ sub slurpy_tuple :Local Args(Tuple[Str,Int, slurpy ArrayRef[Int]]) {
+ my ($self, $c, $str, $int) = @_;
+ $c->res->body('tuple');
+ }
+
sub match :Local Args(StrMatch[qr{\d\d-\d\d-\d\d}]) {
my ($self, $c, $int) = @_;
$c->res->body('match');
}
{
+ my $res = request '/tuple/aaa/111/111/111';
+ is $res->content, 'default';
+}
+
+{
+ my $res = request '/slurpy_tuple/aaa/111/111/111';
+ is $res->content, 'tuple';
+}
+
+
+{
my $res = request '/many_ints/1/2/a';
is $res->content, 'default';
}
is $res->content, 'chained_zero2', "request POST '/chain_base2/capture'";
}
+{
+ my $res = request '/stringy_enum/1/2';
+ is $res->content, 'enum', "request '/stringy_enum/a'";
+}
+
+{
+ my $res = request '/stringy_enum/b/2';
+ is $res->content, 'default', "request '/stringy_enum/a'";
+}
+
+{
+ my $res = request '/stringy_enum/1/a';
+ is $res->content, 'default', "request '/stringy_enum/a'";
+}
+
=over
| /chain_base/*/*/*/*/*/* | /chain_base (1)