1 package TestContentNegotiation::Controller::Root;
4 use MooseX::MethodAttributes;
6 extends 'Catalyst::Controller';
8 sub start :Chained(/) PathPrefix CaptureArgs(0) { }
10 sub is_json : Chained('start') PathPart('') Consumes('application/json') Args(0) { pop->res->body('is_json') }
11 sub is_urlencoded : Chained('start') PathPart('') Consumes('application/x-www-form-urlencoded') Args(0) { pop->res->body('is_urlencoded') }
12 sub is_multipart : Chained('start') PathPart('') Consumes('multipart/form-data') Args(0) { pop->res->body('is_multipart') }
14 sub under :Chained('start') CaptureArgs(0) { }
16 sub is_json_under : Chained('under') PathPart('') Consumes(JSON) Args(0) { pop->res->body('is_json') }
17 sub is_urlencoded_under : Chained('under') PathPart('') Consumes(UrlEncoded) Args(0) { pop->res->body('is_urlencoded') }
18 sub is_multipart_under : Chained('under') PathPart('') Consumes(Multipart) Args(0) { pop->res->body('is_multipart') }
20 ## Or allow more than one type
22 sub multi :Chained('start') CaptureArgs(0) { }
24 sub is_more_than_one_1
25 : Chained('multi') PathPart('')
26 : Consumes('application/x-www-form-urlencoded')
27 : Consumes('multipart/form-data')
30 pop->res->body('formdata1');
33 sub is_more_than_one_2
34 : Chained('multi') PathPart('')
35 : Consumes('HTMLForm')
38 pop->res->body('formdata2');
41 sub is_more_than_one_3
42 : Chained('multi') PathPart('')
43 : Consumes('application/x-www-form-urlencoded,multipart/form-data')
46 pop->res->body('formdata3');
50 __PACKAGE__->meta->make_immutable;