removed extraneous "use"
[catagits/Catalyst-Action-Serialize-Data-Serializer.git] / lib / Catalyst / Controller / REST.pm
index b6b4378..45d5b7b 100644 (file)
@@ -2,7 +2,7 @@ package Catalyst::Controller::REST;
 use Moose;
 use namespace::autoclean;
 
-our $VERSION = '0.88';
+our $VERSION = '0.93';
 $VERSION = eval $VERSION;
 
 =head1 NAME
@@ -36,7 +36,9 @@ Catalyst::Controller::REST - A RESTful controller
 
     # Answer PUT requests to "thing"
     sub thing_PUT {
-        $radiohead = $req->data->{radiohead};
+        my ( $self, $c ) = @_;
+
+        $radiohead = $c->req->data->{radiohead};
         
         $self->status_created(
             $c,
@@ -232,6 +234,25 @@ Your views should have a C<process> method like this:
       return $serialized;
   }
 
+=item * Callback
+
+For infinite flexibility, you can provide a callback for the
+deserialization/serialization steps.
+
+  __PACKAGE__->config(
+      map => {
+          'text/xml'  => [ 'Callback', { deserialize => \&parse_xml, serialize => \&render_xml } ],
+      }
+  );
+
+The C<deserialize> callback is passed a string that is the body of the
+request and is expected to return a scalar value that results from
+the deserialization.  The C<serialize> callback is passed the data
+structure that needs to be serialized and must return a string suitable
+for returning in the HTTP response.  In addition to receiving the scalar
+to act on, both callbacks are passed the controller object and the context
+(i.e. C<$c>) as the second and third arguments.
+
 =back
 
 By default, L<Catalyst::Controller::REST> will return a 
@@ -401,7 +422,7 @@ sub status_no_content {
     my $c    = shift;
     $c->response->status(204);
     $self->_set_entity( $c, undef );
-    return 1.;
+    return 1;
 }
 
 =item status_multiple_choices
@@ -592,6 +613,10 @@ action classes:
 
   sub serialize : ActionClass('Serialize') {}
 
+If you need to deserialize multipart requests (i.e. REST data in
+one part and file uploads in others) you can do so by using the
+L<Catalyst::Action::DeserializeMultiPart> action class.
+
 =back
 
 =head1 A MILD WARNING