Commit | Line | Data |
760d121e |
1 | package TestApp::Controller::HTTPMethods; |
2 | |
3 | use Moose; |
4 | use MooseX::MethodAttributes; |
5 | |
6 | extends 'Catalyst::Controller'; |
7 | |
8 | sub default : Path Args { |
9 | my ($self, $ctx) = @_; |
10 | $ctx->response->body('default'); |
11 | } |
12 | |
13 | sub get : Path('foo') Method('GET') { |
14 | my ($self, $ctx) = @_; |
15 | $ctx->response->body('get'); |
16 | } |
17 | |
18 | sub post : Path('foo') Method('POST') { |
19 | my ($self, $ctx) = @_; |
20 | $ctx->response->body('post'); |
21 | } |
22 | |
23 | sub get_or_post : Path('bar') Method('GET') Method('POST') { |
24 | my ($self, $ctx) = @_; |
25 | $ctx->response->body('get or post'); |
26 | } |
27 | |
28 | sub any_method : Path('baz') { |
29 | my ($self, $ctx) = @_; |
30 | $ctx->response->body('any'); |
31 | } |
32 | |
33 | sub base :Chained('/') PathPrefix CaptureArgs(0) { } |
34 | |
f3a49d84 |
35 | sub chained_get :Chained('base') Args(0) GET { |
760d121e |
36 | pop->res->body('chained_get'); |
f3a49d84 |
37 | } |
760d121e |
38 | |
f3a49d84 |
39 | sub chained_post :Chained('base') Args(0) POST { |
760d121e |
40 | pop->res->body('chained_post'); |
f3a49d84 |
41 | } |
760d121e |
42 | |
f3a49d84 |
43 | sub chained_put :Chained('base') Args(0) PUT { |
760d121e |
44 | pop->res->body('chained_put'); |
f3a49d84 |
45 | } |
760d121e |
46 | |
f3a49d84 |
47 | sub chained_delete :Chained('base') Args(0) DELETE { |
760d121e |
48 | pop->res->body('chained_delete'); |
f3a49d84 |
49 | } |
760d121e |
50 | |
f3a49d84 |
51 | sub get_or_put :Chained('base') PathPart('get_put_post_delete') CaptureArgs(0) GET PUT { } |
760d121e |
52 | |
f3a49d84 |
53 | sub get2 :Chained('get_or_put') PathPart('') Args(0) GET { |
54 | pop->res->body('get2'); |
55 | } |
760d121e |
56 | |
f3a49d84 |
57 | sub put2 :Chained('get_or_put') PathPart('') Args(0) PUT { |
58 | pop->res->body('put2'); |
59 | } |
760d121e |
60 | |
f3a49d84 |
61 | sub post_or_delete :Chained('base') PathPart('get_put_post_delete') CaptureArgs(0) POST DELETE { } |
760d121e |
62 | |
f3a49d84 |
63 | sub post2 :Chained('post_or_delete') PathPart('') Args(0) POST { |
64 | pop->res->body('post2'); |
65 | } |
760d121e |
66 | |
f3a49d84 |
67 | sub delete2 :Chained('post_or_delete') PathPart('') Args(0) DELETE { |
68 | pop->res->body('delete2'); |
69 | } |
760d121e |
70 | |
f3a49d84 |
71 | sub check_default :Chained('base') CaptureArgs(0) { } |
760d121e |
72 | |
f3a49d84 |
73 | sub default_get :Chained('check_default') PathPart('') Args(0) GET { |
74 | pop->res->body('get3'); |
75 | } |
760d121e |
76 | |
f3a49d84 |
77 | sub default_post :Chained('check_default') PathPart('') Args(0) POST { |
78 | pop->res->body('post3'); |
79 | } |
760d121e |
80 | |
f3a49d84 |
81 | sub chain_default :Chained('check_default') PathPart('') Args(0) { |
82 | pop->res->body('chain_default'); |
83 | } |
760d121e |
84 | |
85 | __PACKAGE__->meta->make_immutable; |