X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=t%2Flib%2FTestContentNegotiation%2FController%2FRoot.pm;fp=t%2Flib%2FTestContentNegotiation%2FController%2FRoot.pm;h=ab8e0eb7c291c18110c3680733f323e441d81617;hp=0000000000000000000000000000000000000000;hb=982d7488f79d1c7c489e8e84e1556e22132c0a3d;hpb=e72a3cd6e12d8b9594dcfdddf13c1fbabdffb900 diff --git a/t/lib/TestContentNegotiation/Controller/Root.pm b/t/lib/TestContentNegotiation/Controller/Root.pm new file mode 100644 index 0000000..ab8e0eb --- /dev/null +++ b/t/lib/TestContentNegotiation/Controller/Root.pm @@ -0,0 +1,50 @@ +package TestContentNegotiation::Controller::Root; + +use Moose; +use MooseX::MethodAttributes; + +extends 'Catalyst::Controller'; + +sub start :Chained(/) PathPrefix CaptureArgs(0) { } + + sub is_json : Chained('start') PathPart('') Consumes('application/json') Args(0) { pop->res->body('is_json') } + sub is_urlencoded : Chained('start') PathPart('') Consumes('application/x-www-form-urlencoded') Args(0) { pop->res->body('is_urlencoded') } + sub is_multipart : Chained('start') PathPart('') Consumes('multipart/form-data') Args(0) { pop->res->body('is_multipart') } + + sub under :Chained('start') CaptureArgs(0) { } + + sub is_json_under : Chained('under') PathPart('') Consumes(JSON) Args(0) { pop->res->body('is_json') } + sub is_urlencoded_under : Chained('under') PathPart('') Consumes(UrlEncoded) Args(0) { pop->res->body('is_urlencoded') } + sub is_multipart_under : Chained('under') PathPart('') Consumes(Multipart) Args(0) { pop->res->body('is_multipart') } + + ## Or allow more than one type + + sub multi :Chained('start') CaptureArgs(0) { } + + sub is_more_than_one_1 + : Chained('multi') PathPart('') + : Consumes('application/x-www-form-urlencoded') + : Consumes('multipart/form-data') + : Args(0) + { + pop->res->body('formdata1'); + } + + sub is_more_than_one_2 + : Chained('multi') PathPart('') + : Consumes('HTMLForm') + : Args(0) + { + pop->res->body('formdata2'); + } + + sub is_more_than_one_3 + : Chained('multi') PathPart('') + : Consumes('application/x-www-form-urlencoded,multipart/form-data') + : Args(0) + { + pop->res->body('formdata3'); + } + + +__PACKAGE__->meta->make_immutable;