X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FAction%2FSerialize.pm;h=1eaa1316dfd6c71d32db0a87df724470d5f739aa;hb=refs%2Ftags%2F1.05;hp=74e3af3b4e4fa8d6ed19f092600339f05e0b56d6;hpb=3bb36dcaabf34fef5c15b1bb74c5eb198a7f5168;p=catagits%2FCatalyst-Action-REST.git diff --git a/lib/Catalyst/Action/Serialize.pm b/lib/Catalyst/Action/Serialize.pm index 74e3af3..1eaa131 100644 --- a/lib/Catalyst/Action/Serialize.pm +++ b/lib/Catalyst/Action/Serialize.pm @@ -7,7 +7,7 @@ extends 'Catalyst::Action::SerializeBase'; use Module::Pluggable::Object; use MRO::Compat; -our $VERSION = '0.82'; +our $VERSION = '1.05'; $VERSION = eval $VERSION; has _encoders => ( @@ -23,9 +23,9 @@ sub execute { $self->maybe::next::method(@_); return 1 if $c->req->method eq 'HEAD'; - return 1 if length( $c->response->body ); + return 1 if $c->response->has_body; return 1 if scalar @{ $c->error }; - return 1 if $c->response->status =~ /^(?:204|3\d\d)$/; + return 1 if $c->response->status =~ /^(?:204)$/; my ( $sclass, $sarg, $content_type ) = $self->_load_content_plugins( "Catalyst::Action::Serialize", @@ -54,9 +54,9 @@ sub execute { } }; if ($@) { - return $self->_serialize_bad_request( $c, $content_type, $@ ); + return $self->serialize_bad_request( $c, $content_type, $@ ); } elsif (!$rc) { - return $self->_unsupported_media_type( $c, $content_type ); + return $self->unsupported_media_type( $c, $content_type ); } return 1; @@ -64,6 +64,8 @@ sub execute { __PACKAGE__->meta->make_immutable; +1; + =head1 NAME Catalyst::Action::Serialize - Serialize Data in a Response @@ -138,6 +140,13 @@ Daisuke Maki pointed out that early versions of this Action did not play well with others, or generally behave in a way that was very consistent with the rest of Catalyst. +=head1 CUSTOM ERRORS + +For building custom error responses when serialization fails, you can create +an ActionRole (and use L to apply it to the +C action) which overrides C and/or C<_serialize_bad_request> +methods. + =head1 SEE ALSO You likely want to look at L, which implements