X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FAction%2FSerializeBase.pm;h=b7a6765d3186e9657a443efc2464db3380d7fe75;hb=d34635d1f87b7a53a522583fc6c91e76062709fd;hp=db5d42e2212dca75d64981b3c606208609500454;hpb=faf5c20bff09c91f18b46a3d3d8349379aa36192;p=catagits%2FCatalyst-Action-REST.git diff --git a/lib/Catalyst/Action/SerializeBase.pm b/lib/Catalyst/Action/SerializeBase.pm index db5d42e..b7a6765 100644 --- a/lib/Catalyst/Action/SerializeBase.pm +++ b/lib/Catalyst/Action/SerializeBase.pm @@ -1,6 +1,6 @@ # # Catlyst::Action::SerializeBase.pm -# Created by: Adam Jacob, Marchex, +# Created by: Adam Jacob, Marchex, # # $Id$ @@ -36,8 +36,6 @@ sub _load_content_plugins { $self->_serialize_plugins( \@plugins ); } - my $content_type = $c->request->preferred_content_type; - # Finally, we load the class. If you have a default serializer, # and we still don't have a content-type that exists in the map, # we'll use it. @@ -57,7 +55,10 @@ sub _load_content_plugins { $map = $config->{'map'}; # If we don't have a handler for our preferred content type, try # the default - if ( ! exists $map->{$content_type} ) { + + my ($content_type) = grep { $map->{$_} } @{$c->request->accepted_content_types}; + + unless ( defined $content_type ) { if( exists $config->{'default'} ) { $content_type = $config->{'default'} ; } else { @@ -65,6 +66,12 @@ sub _load_content_plugins { } } + # carp about old text/x-json + if ($content_type eq 'text/x-json') { + $c->log->info('Using deprecated text/x-json content-type.'); + $c->log->info('Use application/json instead!'); + } + if ( exists( $map->{$content_type} ) ) { my $mc; if ( ref( $map->{$content_type} ) eq "ARRAY" ) { @@ -94,8 +101,7 @@ sub _load_content_plugins { eval { require $load_class; }; if ($@) { $c->log->error( - "Error loading $sclass for " . $content_type . ": $!" ) - if $c->log->is_debug; + "Error loading $sclass for " . $content_type . ": $!" ); return $self->_unsupported_media_type($c, $content_type); } else { $self->_loaded_plugins->{$sclass} = 1;