X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FRequest%2FREST.pm;h=795614c440d4a0cb49c538b7140038dc18fd9c02;hb=5132f5e4eeafa3a5958c3cba8d76e61b1ff7740f;hp=cd1b10399e93039d80850ba9f4634294111b4fbb;hpb=9a76221ea1453d244e65429d3e10b5bde42d7733;p=catagits%2FCatalyst-Action-REST.git diff --git a/lib/Catalyst/Request/REST.pm b/lib/Catalyst/Request/REST.pm index cd1b103..795614c 100644 --- a/lib/Catalyst/Request/REST.pm +++ b/lib/Catalyst/Request/REST.pm @@ -1,6 +1,6 @@ # # REST.pm -# Created by: Adam Jacob, Marchex, +# Created by: Adam Jacob, Marchex, # Created on: 10/13/2006 03:54:33 PM PDT # # $Id: $ @@ -10,9 +10,20 @@ package Catalyst::Request::REST; use strict; use warnings; -use base 'Catalyst::Request'; +use base qw/Catalyst::Request Class::Accessor::Fast/; use HTTP::Headers::Util qw(split_header_words); +sub _insert_self_into { + my ($class, $app) = @_; + my $req_class = $app->request_class; + return if $req_class->isa($class); + if ($req_class eq 'Catalyst::Request') { + $app->request_class($class); + } else { + die "$app has a custom request class $req_class, " + . "which is not a $class; see Catalyst::Request::REST"; + } +} =head1 NAME @@ -20,7 +31,7 @@ Catalyst::Request::REST - A REST-y subclass of Catalyst::Request =head1 SYNOPSIS - if ( $c->request->accepts('text/x-json') ) { + if ( $c->request->accepts('application/json') ) { ... } @@ -32,11 +43,14 @@ This is a subclass of C that adds a few methods to the request object to faciliate writing REST-y code. Currently, these methods are all related to the content types accepted by the client. +Note that if you have a custom request class in your application, and it does +not inherit from C, your application will fail with an +error indicating a conflict the first time it tries to use +C's functionality. To fix this error, make sure your +custom request class inherits from C. =head1 METHODS -=over 4 data - If the request went through the Deserializer action, this method will returned the deserialized data structure. @@ -44,6 +58,8 @@ returned the deserialized data structure. __PACKAGE__->mk_accessors(qw(data accept_only)); +=over 4 + =item accepted_content_types Returns an array reference of content types accepted by the @@ -87,7 +103,6 @@ sub accepted_content_types { if $self->content_type; if ($self->method eq "GET" && $self->param('content-type')) { - $types{ $self->param('content-type') } = 2; } @@ -142,10 +157,16 @@ sub accepts { return grep { $_ eq $type } @{ $self->accepted_content_types }; } +=back + =head1 AUTHOR Adam Jacob , with lots of help from mst and jrockway +=head1 MAINTAINER + +J. Shirley + =head1 LICENSE You may distribute this code under the same terms as Perl itself.