X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Controller-DBIC-API.git;a=blobdiff_plain;f=lib%2FCatalyst%2FController%2FDBIC%2FAPI%2FRPC.pm;h=343c646505c0d423156fb7a826be3550742eb78e;hp=965549707b8809ff31e8fba03ca486146a35239d;hb=8ea592cbf64db6d549685f3962c88d925fe7cdb1;hpb=609916e5de6201b2e2212328153657194b41a730 diff --git a/lib/Catalyst/Controller/DBIC/API/RPC.pm b/lib/Catalyst/Controller/DBIC/API/RPC.pm index 9655497..343c646 100644 --- a/lib/Catalyst/Controller/DBIC/API/RPC.pm +++ b/lib/Catalyst/Controller/DBIC/API/RPC.pm @@ -1,11 +1,12 @@ package Catalyst::Controller::DBIC::API::RPC; + #ABSTRACT: Provides an RPC interface to DBIx::Class use Moose; BEGIN { extends 'Catalyst::Controller::DBIC::API'; } __PACKAGE__->config( - 'action' => { object => { PathPart => 'id' } }, + 'action' => { object_with_id => { PathPart => 'id' } }, 'default' => 'application/json', 'stash_key' => 'response', 'map' => { @@ -16,7 +17,7 @@ __PACKAGE__->config( =head1 DESCRIPTION -Provides an RPC API interface to the functionality described in L. +Provides an RPC API interface to the functionality described in L. By default provides the following endpoints: @@ -37,22 +38,15 @@ CaptureArgs: 0 As described in L, 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. __PACKAGE__->config - ( action => { setup => { PathPart => 'track', Chained => '/api/rpc/rpc_base' } }, + ( action => { setup => { PathPart => 'track', Chained => '/api/rpc/rpc_base' } }, ... ); =cut -sub index : Chained('setup') PathPart('') Args(0) { - my ( $self, $c ) = @_; - - $self->push_error($c, { message => 'Not implemented' }); - $c->res->status( '404' ); -} - =method_protected create -Chained: L +Chained: L PathPart: create CaptureArgs: 0 @@ -60,10 +54,9 @@ Provides an endpoint to the functionality described in Lforward('update_or_create'); +sub create : Chained('objects_no_id') : PathPart('create') : Args(0) { + my ( $self, $c ) = @_; + $self->update_or_create($c); } =method_protected list @@ -76,10 +69,9 @@ Provides an endpoint to the functionality described in Lnext::method($c); +sub list : Chained('deserialize') : PathPart('list') : Args(0) { + my ( $self, $c ) = @_; + $self->next::method($c); } =method_protected item @@ -92,10 +84,9 @@ Provides an endpoint to the functionality described in Lforward('view'); +sub item : Chained('object_with_id') : PathPart('') : Args(0) { + my ( $self, $c ) = @_; + $self->next::method($c); } =method_protected update @@ -108,10 +99,9 @@ Provides an endpoint to the functionality described in Lforward('update_or_create'); +sub update : Chained('object_with_id') : PathPart('update') : Args(0) { + my ( $self, $c ) = @_; + $self->update_or_create($c); } =method_protected delete @@ -124,15 +114,14 @@ Provides an endpoint to the functionality described in Lnext::method($c); } =method_protected update_bulk -Chained: L +Chained: L PathPart: update Args: 0 @@ -140,15 +129,14 @@ Provides an endpoint to the functionality described in Lforward('update_or_create'); +sub update_bulk : Chained('objects_no_id') : PathPart('update') : Args(0) { + my ( $self, $c ) = @_; + $self->update_or_create($c); } =method_protected delete_bulk -Chained: L +Chained: L PathPart: delete Args: 0 @@ -156,10 +144,9 @@ Provides an endpoint to the functionality described in Lnext::method($c); +sub delete_bulk : Chained('objects_no_id') : PathPart('delete') : Args(0) { + my ( $self, $c ) = @_; + $self->delete($c); } 1;