no need for OurPkgVersion with modern dzil
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Request / REST.pm
CommitLineData
256c894f 1package Catalyst::Request::REST;
f5aa7d45 2
930013e6 3use Moose;
37694e6c 4
5use Catalyst::Utils;
f168fa3e 6use namespace::autoclean;
7
8extends 'Catalyst::Request';
e623bdf2 9with 'Catalyst::TraitFor::Request::REST';
f168fa3e 10
0745d6eb 11# Please don't take this as a recommended way to do things.
12# The code below is grotty, badly factored and mostly here for back
13# compat..
5132f5e4 14sub _insert_self_into {
37694e6c 15 my ($class, $app_class ) = @_;
27beb190 16 # the fallback to $app_class is for the (rare and deprecated) case when
17 # people are defining actions in MyApp.pm instead of in a controller.
2998eff6 18 my $app = (blessed($app_class) && $app_class->can('_application'))
19 ? $app_class->_application : Catalyst::Utils::class2appclass( $app_class ) || $app_class;
37694e6c 20
5132f5e4 21 my $req_class = $app->request_class;
22 return if $req_class->isa($class);
149182b3 23 my $req_class_meta = Moose->init_meta( for_class => $req_class );
bc06b9a3 24 my $role = $class->_related_role;
83273f94 25 return if $req_class_meta->does_role($role);
f560e0ae 26 if ($req_class eq 'Catalyst::Request') {
27 $app->request_class($class);
28 }
29 else {
30 my $meta = Moose::Meta::Class->create_anon_class(
31 superclasses => [$req_class],
83273f94 32 roles => [$role],
f560e0ae 33 cache => 1
34 );
d54b6460 35 $meta->_add_meta_method('meta');
f560e0ae 36 $app->request_class($meta->name);
37 }
5132f5e4 38}
256c894f 39
83273f94 40sub _related_role { 'Catalyst::TraitFor::Request::REST' }
41
f168fa3e 42__PACKAGE__->meta->make_immutable;
1212cee0 43
441;
45
f168fa3e 46__END__
47
9a76221e 48=head1 NAME
49
50Catalyst::Request::REST - A REST-y subclass of Catalyst::Request
51
52=head1 SYNOPSIS
53
d6fb033c 54 if ( $c->request->accepts('application/json') ) {
9a76221e 55 ...
56 }
57
58 my $types = $c->request->accepted_content_types();
59
60=head1 DESCRIPTION
61
38e05ec4 62This is a subclass of C<Catalyst::Request> that applies the
85aa4e18 63L<Catalyst::TraitFor::Request::REST> role to your request class. That trait
d6ece98c 64adds a few methods to the request object to facilitate writing REST-y code.
9a76221e 65
85aa4e18 66This class is only here for backwards compatibility with applications already
67subclassing this class. New code should use
68L<Catalyst::TraitFor::Request::REST> directly.
9a76221e 69
38e05ec4 70L<Catalyst::Action::REST> and L<Catalyst::Controller::REST> will arrange
71for the request trait to be applied if needed.
9a76221e 72
38e05ec4 73=head1 SEE ALSO
9a76221e 74
38e05ec4 75L<Catalyst::TraitFor::Request::REST>.
fec6d454 76
6e6e0bf9 77=head1 AUTHORS
9a76221e 78
6e6e0bf9 79See L<Catalyst::Action::REST> for authors.
fec6d454 80
9a76221e 81=head1 LICENSE
82
83You may distribute this code under the same terms as Perl itself.
84
85=cut