X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FAction%2FSerializeBase.pm;h=4c45d8c2268da7771607f2319c7c1ac0991ffe0b;hb=be099c6c6c1f5b9f6c3c543762c1c1fcde82946a;hp=e616f8a0e8db448dc3a4a7b5f6e1a3acc3eac9be;hpb=9cd203c9c0d7099ff38fb9e1132459d76d19a360;p=catagits%2FCatalyst-Action-REST.git diff --git a/lib/Catalyst/Action/SerializeBase.pm b/lib/Catalyst/Action/SerializeBase.pm index e616f8a..4c45d8c 100644 --- a/lib/Catalyst/Action/SerializeBase.pm +++ b/lib/Catalyst/Action/SerializeBase.pm @@ -1,27 +1,23 @@ -# -# Catlyst::Action::SerializeBase.pm -# Created by: Adam Jacob, Marchex, -# -# $Id$ - package Catalyst::Action::SerializeBase; -use strict; -use warnings; +use Moose; +use namespace::autoclean; -use base 'Catalyst::Action'; +extends 'Catalyst::Action'; use Module::Pluggable::Object; use Catalyst::Request::REST; use Catalyst::Utils (); -sub new { - my $class = shift; - my $config = shift; - Catalyst::Request::REST->_insert_self_into( $config->{class} ); - return $class->SUPER::new($config, @_); -} +our $VERSION = '1.03'; +$VERSION = eval $VERSION; + +after BUILDARGS => sub { + my $class = shift; + my $config = shift; + Catalyst::Request::REST->_insert_self_into( $config->{class} ); +}; -__PACKAGE__->mk_accessors(qw(_serialize_plugins _loaded_plugins)); +has [qw(_serialize_plugins _loaded_plugins)] => ( is => 'rw' ); sub _load_content_plugins { my $self = shift; @@ -79,7 +75,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 @@ -105,10 +101,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; @@ -118,7 +114,7 @@ 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; } @@ -136,7 +132,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); @@ -150,7 +146,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); @@ -159,13 +155,13 @@ sub _serialize_bad_request { return undef; } +__PACKAGE__->meta->make_immutable; + 1; =head1 NAME -B - -Base class for Catalyst::Action::Serialize and Catlayst::Action::Deserialize. +Catalyst::Action::SerializeBase - Base class for Catalyst::Action::Serialize and Catlayst::Action::Deserialize. =head1 DESCRIPTION @@ -177,11 +173,9 @@ code for L and L. L, L, L, -=head1 AUTHOR - -Adam Jacob , with lots of help from mst and jrockway. +=head1 AUTHORS -Marchex, Inc. paid me while I developed this module. (http://www.marchex.com) +See L for authors. =head1 LICENSE