X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FAction%2FSerializeBase.pm;h=b901f61eff6eadf441990161536263139652ebb0;hb=64ffc38be4c6693300e073fe3df3e2b718273be6;hp=9cca6aa4e867fd96859cfff1fec673bee28010a4;hpb=a9e5f3d2aa58a89ffd70ec22a5485fdbd4b7a3d6;p=catagits%2FCatalyst-Action-REST.git diff --git a/lib/Catalyst/Action/SerializeBase.pm b/lib/Catalyst/Action/SerializeBase.pm index 9cca6aa..b901f61 100644 --- a/lib/Catalyst/Action/SerializeBase.pm +++ b/lib/Catalyst/Action/SerializeBase.pm @@ -8,9 +8,6 @@ use Module::Pluggable::Object; use Catalyst::Request::REST; use Catalyst::Utils (); -our $VERSION = '0.88'; -$VERSION = eval $VERSION; - after BUILDARGS => sub { my $class = shift; my $config = shift; @@ -75,7 +72,7 @@ sub _load_content_plugins { # pick the best match that we have a serializer mapping for my ($content_type) = grep { $map->{$_} } @accepted_types; - return $self->_unsupported_media_type($c, $content_type) + return $self->unsupported_media_type($c, $content_type) if not $content_type; # carp about old text/x-json @@ -101,10 +98,10 @@ sub _load_content_plugins { $sclass .= $mc; #} if ( !grep( /^$sclass$/, @{ $self->_serialize_plugins } ) ) { - return $self->_unsupported_media_type($c, $content_type); + return $self->unsupported_media_type($c, $content_type); } } else { - return $self->_unsupported_media_type($c, $content_type); + return $self->unsupported_media_type($c, $content_type); } unless ( exists( $self->_loaded_plugins->{$sclass} ) ) { my $load_class = $sclass; @@ -114,17 +111,19 @@ sub _load_content_plugins { if ($@) { $c->log->error( "Error loading $sclass for " . $content_type . ": $!" ); - return $self->_unsupported_media_type($c, $content_type); + return $self->unsupported_media_type($c, $content_type); } else { $self->_loaded_plugins->{$sclass} = 1; } } if ($search_path eq "Catalyst::Action::Serialize") { - if ($content_type) { - $c->response->header( 'Vary' => 'Content-Type' ); - } elsif ($c->request->accept_only) { - $c->response->header( 'Vary' => 'Accept' ); + unless( $c->response->header( 'Vary' ) ) { + if ($content_type) { + $c->response->header( 'Vary' => 'Content-Type' ); + } elsif ($c->request->accept_only) { + $c->response->header( 'Vary' => 'Accept' ); + } } $c->response->content_type($content_type); } @@ -132,7 +131,7 @@ sub _load_content_plugins { return $sclass, $sarg, $content_type; } -sub _unsupported_media_type { +sub unsupported_media_type { my ( $self, $c, $content_type ) = @_; $c->res->content_type('text/plain'); $c->res->status(415); @@ -146,7 +145,7 @@ sub _unsupported_media_type { return undef; } -sub _serialize_bad_request { +sub serialize_bad_request { my ( $self, $c, $content_type, $error ) = @_; $c->res->content_type('text/plain'); $c->res->status(400); @@ -157,6 +156,8 @@ sub _serialize_bad_request { __PACKAGE__->meta->make_immutable; +1; + =head1 NAME Catalyst::Action::SerializeBase - Base class for Catalyst::Action::Serialize and Catlayst::Action::Deserialize.