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=7a2980f946eefc1eaff5672447807746e5ee741c;hpb=d6fb033c1dbd94c0d527ec53291af2c50a482e9d;p=catagits%2FCatalyst-Action-REST.git diff --git a/lib/Catalyst/Action/SerializeBase.pm b/lib/Catalyst/Action/SerializeBase.pm index 7a2980f..b7a6765 100644 --- a/lib/Catalyst/Action/SerializeBase.pm +++ b/lib/Catalyst/Action/SerializeBase.pm @@ -36,14 +36,6 @@ sub _load_content_plugins { $self->_serialize_plugins( \@plugins ); } - my $content_type = $c->request->preferred_content_type || ''; - - # 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!'); - } - # 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. @@ -63,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 { @@ -71,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" ) {