perltidy all classes
[catagits/Catalyst-Controller-DBIC-API.git] / lib / Catalyst / Controller / DBIC / API / REST.pm
1 package Catalyst::Controller::DBIC::API::REST;
2
3 #ABSTRACT: Provides a REST interface to DBIx::Class
4 use Moose;
5 BEGIN { extends 'Catalyst::Controller::DBIC::API'; }
6
7 __PACKAGE__->config(
8     'default'   => 'application/json',
9     'stash_key' => 'response',
10     'map'       => {
11         'application/x-www-form-urlencoded' => 'JSON',
12         'application/json'                  => 'JSON',
13     }
14 );
15
16 =head1 DESCRIPTION
17
18 Provides a REST style API interface to the functionality described in L<Catalyst::Controller::DBIC::API>.
19
20 By default provides the following endpoints:
21
22   $base (operates on lists of objects and accepts GET, PUT, POST and DELETE)
23   $base/[identifier] (operates on a single object and accepts GET, PUT, POST and DELETE)
24
25 Where $base is the URI described by L</setup>, the chain root of the controller, and the request type will determine the L<Catalyst::Controller::DBIC::API> method to forward.
26
27 =method_protected setup
28
29 Chained: override
30 PathPart: override
31 CaptureArgs: 0
32
33 As described in L<Catalyst::Controller::DBIC::API/setup>, this action is the chain root of the controller but has no pathpart or chain parent defined by default, so these must be defined in order for the controller to function. The neatest way is normally to define these using the controller's config.
34
35   __PACKAGE__->config
36     ( action => { setup => { PathPart => 'track', Chained => '/api/rest/rest_base' } },
37         ...
38   );
39
40 =method_protected update_or_create_objects
41
42 Chained: L</objects_no_id>
43 PathPart: none
44 Args: 0
45 Method: POST/PUT
46
47 Calls L<Catalyst::Controller::DBIC::API/update_or_create>. 
48
49 =cut
50
51 sub update_or_create_objects : POST PUT Chained('objects_no_id') PathPart('')
52     Args(0) {
53     my ( $self, $c ) = @_;
54     $self->update_or_create($c);
55 }
56
57 =method_protected delete_many_objects
58
59 Chained: L</objects_no_id>
60 PathPart: none
61 Args: 0
62 Method: DELETE
63
64 Calls L<Catalyst::Controller::DBIC::API/delete>. 
65
66 =cut
67
68 sub delete_many_objects : DELETE Chained('objects_no_id') PathPart('')
69     Args(0) {
70     my ( $self, $c ) = @_;
71     $self->delete($c);
72 }
73
74 =method_protected list_objects
75
76 Chained: L</objects_no_id>
77 PathPart: none
78 Args: 0
79 Method: GET
80
81 Calls L<Catalyst::Controller::DBIC::API/list>. 
82
83 =cut
84
85 sub list_objects : GET Chained('objects_no_id') PathPart('') Args(0) {
86     my ( $self, $c ) = @_;
87     $self->list($c);
88 }
89
90 =method_protected update_or_create_one_object
91
92 Chained: L</object_with_id>
93 PathPart: none
94 Args: 0
95 Method: POST/PUT
96
97 Calls L<Catalyst::Controller::DBIC::API/update_or_create>.
98
99 =cut
100
101 sub update_or_create_one_object : POST PUT Chained('object_with_id')
102     PathPart('') Args(0) {
103     my ( $self, $c ) = @_;
104     $self->update_or_create($c);
105 }
106
107 =method_protected delete_one_object
108
109 Chained: L</object_with_id>
110 PathPart: none
111 Args: 0
112 Method: DELETE
113
114 Calls L<Catalyst::Controller::DBIC::API/delete>.
115
116 =cut
117
118 sub delete_one_object : DELETE Chained('object_with_id') PathPart('') Args(0)
119 {
120     my ( $self, $c ) = @_;
121     $self->delete($c);
122 }
123
124 =method_protected list_one_object
125
126 Chained: L</object_with_id>
127 PathPart: none
128 Args: 0
129 Method: GET
130
131 Calls L<Catalyst::Controller::DBIC::API/item>.
132
133 =cut
134
135 sub list_one_object : GET Chained('object_with_id') PathPart('') Args(0) {
136     my ( $self, $c ) = @_;
137     $self->item($c);
138 }
139
140 1;