Use ActionRole::MatchRequestMethod instead of Action::REST.
Florian Ragwitz [Mon, 1 Mar 2010 21:59:26 +0000 (22:59 +0100)]
dist.ini
lib/Catalyst/Controller/DBIC/API.pm
lib/Catalyst/Controller/DBIC/API/REST.pm

index d75b155..4671838 100644 (file)
--- a/dist.ini
+++ b/dist.ini
@@ -20,6 +20,8 @@ repository                          = git://git.shadowcat.co.uk/catagits/Catalys
 [Prereq]
 DBIx::Class = 0.08103
 Catalyst::Runtime = 5.7010
+Catalyst::Controller::ActionRole = 0
+Catalyst::ActionRole::MatchRequestMethod = 0
 Catalyst::Action::REST = 0.83
 CGI::Expand = 2.02
 JSON::Any = 1.19
index ea086b7..2027696 100644 (file)
@@ -2,7 +2,7 @@ package Catalyst::Controller::DBIC::API;
 
 #ABSTRACT: Provides a DBIx::Class web service automagically
 use Moose;
-BEGIN { extends 'Catalyst::Controller'; }
+BEGIN { extends 'Catalyst::Controller::ActionRole'; }
 
 use CGI::Expand ();
 use DBIx::Class::ResultClass::HashRefInflator;
index 04fe041..2414a9c 100644 (file)
@@ -50,27 +50,19 @@ GET: forwards to L<Catalyst::Controller::DBIC::API/list>
 
 =cut
 
-sub no_id : Chained('objects_no_id') PathPart('') ActionClass('REST') :Args(0) {}
-
-sub no_id_PUT
-{
-       my ( $self, $c ) = @_;
-    $self->update_or_create($c);
-}
-
-sub no_id_POST
+sub update_or_create_objects : Chained('objects_no_id') PathPart('') Does('MatchRequestMethod') Method('POST') Method('PUT') Args(0)
 {
        my ( $self, $c ) = @_;
     $self->update_or_create($c);
 }
 
-sub no_id_DELETE
+sub delete_many_objects : Chained('objects_no_id') PathPart('') Does('MatchRequestMethod') Method('DELETE') Args(0)
 {
        my ( $self, $c ) = @_;
     $self->delete($c);
 }
 
-sub no_id_GET
+sub list_objects : Chained('objects_no_id') PathPart('') Does('MatchRequestMethod') Method('GET') Args(0)
 {
        my ( $self, $c ) = @_;
     $self->list($c);
@@ -90,27 +82,19 @@ GET: forwards to L<Catalyst::Controller::DBIC::API/item>
 
 =cut
 
-sub with_id :Chained('object_with_id') :PathPart('') :ActionClass('REST') :Args(0) {}
-
-sub with_id_PUT
-{
-       my ( $self, $c ) = @_;
-    $self->update_or_create($c);
-}
-
-sub with_id_POST
+sub update_or_create_one_object : Chained('object_with_id') PathPart('') Does('MatchRequestMethod') Method('POST') Method('PUT') Args(0)
 {
        my ( $self, $c ) = @_;
     $self->update_or_create($c);
 }
 
-sub with_id_DELETE
+sub delete_one_object : Chained('object_with_id') PathPart('') Does('MatchRequestMethod') Method('DELETE') Args(0)
 {
        my ( $self, $c ) = @_;
     $self->delete($c);
 }
 
-sub with_id_GET
+sub list_one_object : Chained('object_with_id') PathPart('') Does('MatchRequestMethod') Method('GET') Args(0)
 {
        my ( $self, $c ) = @_;
     $self->item($c);