use base 'Catalyst::Action';
use Class::Inspector;
+use Moose::Util qw(does_role);
use Catalyst;
-use Catalyst::Request::REST;
+use Catalyst::RequestRole::REST;
use Catalyst::Controller::REST;
+use namespace::clean -except => 'meta';
BEGIN { require 5.008001; }
our $VERSION = '0.71';
-sub new {
- my $class = shift;
- my $config = shift;
- Catalyst::Request::REST->_insert_self_into( $config->{class} );
- return $class->SUPER::new($config, @_);
-}
-
=head1 NAME
Catalyst::Action::REST - Automated REST Method Dispatching
my $self = shift;
my $c = shift;
+ Catalyst::RequestRole::REST->meta->apply($c->request)
+ unless does_role($c->request, 'Catalyst::RequestRole::REST');
+
my $controller = $c->component( $self->class );
my $method = $self->name . "_" . uc( $c->request->method );
if ( $controller->can($method) ) {
use Moose::Util qw(does_role);
use Catalyst::ControllerRole::SerializeConfig;
use Module::Pluggable::Object;
-use Catalyst::Request::REST;
+use Catalyst::RequestRole::REST;
use Catalyst::Utils ();
-sub new {
- my $class = shift;
- my $config = shift;
- Catalyst::Request::REST->_insert_self_into( $config->{class} );
- return $class->SUPER::new($config, @_);
-}
-
__PACKAGE__->mk_accessors(qw(_serialize_plugins _loaded_plugins));
sub _load_content_plugins {
my $self = shift;
my ( $search_path, $controller, $c ) = @_;
+ Catalyst::RequestRole::REST->meta->apply($c->request)
+ unless does_role($c->request, 'Catalyst::RequestRole::REST');
+
unless ( defined( $self->_loaded_plugins ) ) {
$self->_loaded_plugins( {} );
}
use strict;
use warnings;
-use Test::More tests => 28;
+use Test::More tests => 26;
use FindBin;
use lib ( "$FindBin::Bin/../lib", "$FindBin::Bin/../t/lib" );
{
my $test = 'Test::Catalyst::Action::REST';
use_ok $test;
- is($test->request_class, 'Catalyst::Request::REST',
- 'Request::REST took over for Request');
-
- $test->request_class('Some::Other::Class');
- eval { $test->setup_finished(0); $test->setup };
- like $@, qr/$test has a custom request class Some::Other::Class/;
-
- {
- package My::Request;
- use base 'Catalyst::Request::REST';
- }
- $test->request_class('My::Request');
- eval { $test->setup_finished(0); $test->setup };
- is $@, '', 'no error from Request::REST subclass';
+ is($test->request_class, 'Catalyst::Request',
+ 'Request::REST did not take over for Request');
}
package MockContext;