Revision history for Catalyst-Action-REST

1.16      2014-09-12 13:21:43-05:00 America/Chicago
 * Switch from JSON to JSON::MaybeXS to get a better choice of JSON parsers.

1.15      2014-05-07 09:02:44-05:00 CST6CDT

 * Added new status_see_other method for returning a 303 redirect.
 * Added new status_moved method for returning a 301 redirect. (Matthew Keller)

1.14      2013-12-27 15:32:19 America/Chicago

 * Stop prompting for features at install time

1.13  2013-11-08 09:40:00 EST

 * Fix tests to skip if YAML::Syck is not installed (Arthur Axel fREW Schmidt)

1.12  2013-09-03 13:00:00 EST


 Removed The YAML and HTML parser from the distro.  You 
 should install these if you actually use them.  They are listed as
 optional dependencies going forward.

 This is possibly a breaking change, but necessary for security and
 considered acceptable since those formats have not generally
 become preferred for web services.

 In addition, the default de/serialization mappings for HTML and YAML
 have been removed.  You can add that back by adding the following to
 you Configuration for the subclass of Catalyst::Controller::REST -

    package Foo::Controller::Bar;

    use Moose;
    use namespace::autoclean;

    BEGIN { extends 'Catalyst::Controller::REST' }
      'map' => {
        'text/html'          => 'YAML::HTML',
        'text/x-yaml'        => 'YAML',

 You should do this if you are using these de/serialization formats.

1.11  2013-06-16 15:23:03 BST

 * Fix infinite recursion in tests under Catalyst 5.90040

1.10  2013-04-22 14:36:53 BST

 * Use YAML rather than JSON in basic tests

1.09  2013-04-19 13:34:38 BST

 * Don't load Data::Serializer unnecessarily in tests

1.08  2013-04-16 08:33:00 BST

 * Factor Data::Serializable into it's own dist to stop breakages.

     If you use any of:

     * Data::Dumper
     * Data::Denter
     * Data::Taxi
     * Config::General
     * PHP::Serialization

     You'll need to install Catalyst-Action-Serialize-Data-Serializer and add the
     appropriate lines to your controller config.  Said lines may be:

         'text/x-data-dumper' => [ 'Data::Serializer', 'Data::Dumper' ],
         'text/x-data-denter' => [ 'Data::Serializer', 'Data::Denter' ],
         'text/x-data-taxi'   => [ 'Data::Serializer', 'Data::Taxi'   ],
         'text/x-config-general'    => [ 'Data::Serializer', 'Config::General' ],
         'text/x-php-serialization' => [ 'Data::Serializer', 'PHP::Serialization' ],

1.07  2013-04-11 20:20:00 BST

 * Don't serialize if a view is explicitly set.

  - If the controller sets the view in $c->stash->{current_view} or
    $c->stash->{current_view_instance}, then it is explicitly requesting a
    certain kind of serialization and C::A::Serialize shouldn't override

 * Remove Storable and FreezeThaw from the list
   of serialization methods offered by default, and
   from the docs - they're totally unsafe :/

1.06  2012-12-11 22:04:00 UTC

 * Sort list of allowed methods. RT#81825

1.05  2012-07-02 20:13:00 BST

 * Bugfix get_allowed_methods list:
    - include HEAD
    - remove "not_implemented"

1.04  2012-06-30 10:25:00 BST

 * Bugfix to _dispatch_rest_method

1.03  2012-06-28 00:40:00 BST

 * Expose _get_allowed_methods to the API (wreis)

 * Fix default OPTIONS handler: As the ->body is defined, then serialization
   won't happen and we don't get wrong responses. (wreis)

 * Add default HEAD handler: auto dispatches to _GET method if it exists (wreis)

1.02  2012-06-05 22:23:00 BST

 * Fix forwarded REST methods, e.g. foo_GET to be more
   correctly displayed as a forward in the stats info.

 * Make public response building methods for errors
   _unsupported_media_type and _serialize_bad_request which
   can be extended from an action-role to return custom
   error response.

1.01  2012-05-29 20:19:00 BST

 * Add Catalyst::Action::Deserialize::JSON::XS

 * Fix JSON::XS useage to depend on v2.0, and rely on the
   fact that can be backed by XS code, by explicitly setting

1.00  2012-04-13 09:31:00 BST

 * Repack without auto_include to stop Module::Install inlining
   Test::More without Test::Builder. RT#76524

0.99  2012-02-28 09:09:00 UTC

 * Repack with new Module::Install to stop depending on an unnecessary
   ExtUtils::MakeMaker version.

0.98  2012-02-21 11:40:00 UTC

 * More fixes as per last release.

0.97  2012-02-21 09:58:00 UTC

 * Fix test with latest Catalyst version which passes _log into

0.96  2012-01-20 11:22:00 UTC

 * Added fix for RT 63537 (from Gerv) and tests to check it.

0.95  2012-01-04 19:34:00 UTC

 * Fix regex for JSONP parameter name to be able to include the . character
   in Catalyst::Action::Serialize::JSONP. RT#73741

 * Add optional location parameter to status_accepted handler. RT#73691 (ghenry)

0.94  2011-12-09 08:35:00 UTC

 * Add 403 Forbidden and 302 Not Found status methods to
   Catalyst::Controller::REST (Caleb Cushing)

0.93  2011-10-12 11:37:00 America/Chicago

 * Add a "Callback" serializer/deserializer to allow for more customization in
   how the REST data is parsed/generated (bphillips)

0.92  2011-10-01 11:04:00 BST

 * Add a Catalyst::Action::DeserializeMultiPart, allowing one part of a multipart
   request to be deserialized as the REST data (allowing other parts to be used for
   file uploads, for example) (bphillips)

0.91  2011-08-04 14:37:21 Europe/Berlin

 * For the deserialization action class, make the HTTP methods it operates on
   configurable on a per-action level (plu, rafl).

0.90  2011-02-25 13:56:00 UTC

 * Remove test which is no longer applicable and fails in the latest Catalyst

0.89  2011-01-24 21:57:42 UTC

 * All classes are now made immutable. (Dave Rolsky)

 * Added a Catalyst::Action::REST::ForBrowsers class. This will try to dispatch
   GET requests to a foo_GET_html method before trying foo_GET. (Dave Rolsky)

0.88  2011-01-11 23:07:00 UTC

 * Fix documentation for overriding Serialize and Deserialize actions
   in Catalyst::Controller::REST.

 * Avoid warning with empty response bodies and new Catalyst version
   (>= 5.80030)

 * Returning a body of '' is now possible - Catalyst::Action::Serialize
   acts like Catalyst::Action::RenderView (>= 0.16) by using the has_body
   predicate in Catalyst::Response (>= 5.80030)

0.87  2010-11-03 19:46:00 UTC

 * Fix Request class role when used with new Moose and other request
   class roles.

0.86  2010-09-01 23:14:00 BST

 * Add rest_serializer_json_options config key useable to set options
   like relaxed => 1 to be passed to the JSON serializer (Ton Voon)

 * Make Data::Dumper unserializer safer by using a Safe compartment (Ton Voon)

0.85  2010-05-13 10:09:19 Europe/Berlin

 * Make Catalyst::Action::Serialize::View return directly rather than serializing
   a response for 3XX status codes. This stops back-compat breakage from the
   previous change (in 0.84), whilst also allowing actual data serializers
   to still handle 3XX.

 * Fix docs in Catalyst::TraitFor::Request::REST::ForBrowsers. (RT#54983)

0.84  2010-05-06 09:27:56 BST

 * Revert always using a trait rather than Catalyst::Request::REST to improve
   debug messages.

 * Add a status_multiple_choices helper method to the Controller base class.

 * Allow 3XX responses to be serialized.

0.83  2010-02-08 22:17:12 UTC

 * Make it possible to deserialize a request with a DELETE method. This probably
   breaks 'strict' REST guidelines, but is useful for being able to delete multiple
   resources from a single call by providing a batch delete method.

 * Remove JSONP from the list of default serializers (RT#54336)
   Fix MANIFEST (RT#54408)

0.82  2010-02-04 22:31:57 UTC

 * Integrated Catalyst::Request::REST::ForBrowsers as
   Catalyst::TraitFor::Request::ForBrowsers. (Dave Rolsky)

 * Clarified docs so that they encourage the use of the request traits, rather
   than using Catalyst::Request::REST. (Dave Rolsky)

 * When Catalyst::Action::REST or Controller::REST automatically add the trait,
   your request class will no longer end up getting set to
   Catalyst::Request::REST. Instead, creates an anon class with the appropriate
   role. (Dave Rolsky)

 * Shut up log output from the tests. (Dave Rolsky)

 * Added a $VERSION to every module, mostly to make sure that when people
   install Catalyst::Request::REST::ForBrowsers, they get the version in this
   distro. (Dave Rolsky)

 * Change Catalyst::Action::Serialize, Catalyst::Action::Deserialize and
   Catalyst::Action::SerializeBase to be more Moose like.

 * Fix JSON and JSON::XS to encode_blessed. (fREW)
 * Fix Catalyst::Action::Serialize to use objects instead of classes. (fREW)
 * Fix doc nits. (RT#53780)

0.81  2010-01-14 20:56:00 UTC

 * Add a JSONP serialization type.

0.80  2009-12-19 14:54:00 UTC

 * Convert all classes to Moose

 * Change Catalyst::Request::REST to be a mostly empty class, with
   all the functionality in Catalyst::TraitFor::Request::REST

 * Simplify _get_allowed_methods method (aristotle)

 * Rework serializer return so that serializers throw an exception in
   the case of issues serializing the data (hobbs).

0.79  2009-12-11 01:08:00 UTC

 * Cope with invalid (missing required q parameter) header like:
   application/json; charset="utf-8"

 * Fix documentation to not mention deprecated things and generally be
   in better style.

 * Make author information consistant and only in one module.

0.78  2009-09-28 15:01:03 BST

 * Require Moose for the tests (RT#50066).

0.77  2009-08-27 02:21:09 BST

 * Allow dispatching to Catalyst Actions, for use with ActionClasses
   etc - fREW

 * Fix test if CATALYST_DEBUG environment variable is set

0.76  2009-08-21 21:20:52 BST

 * Added two new status response helpers (202 no content and 410 gone),
   and tests - Franck Cuny

0.75  2009-08-17 14:07:41 BST

 * Fix optional test failures in catalyst-action-serialize-accept.t
 * Added a serializer for JSON::XS
 * Made test independent of YAML::Syck bugs (dandv)

0.74  2009-07-22 23:49:16 BST (t0m)

 * Switch from NEXT to MRO::Compat (agladdish).

 * Add display of additional REST actions in the stats, and also fix a warning
   in Catalyst 5.80 when you forward to another action from inside an
   action_FOO method (as it was confusing the stats).

 * POD fixes
 * Catalyst::Action::REST no longer @ISA Catalyst or Catalyst::Controller.
 * Change constructor to call next::method instead of SUPER::
 * Change method used to find the application class to be more correct

0.73  2009-06-27 20:20:09 America/New_York (hdp)

 * Packaging fixes

0.72  2009-06-25 14:52:29 America/New_York (hdp)

 * Refresh Module::Install

0.71  2009-03-28 09:16:09 America/Los_Angeles (hdp)

 * Fix RT#44641, missing documented 'end' action

0.70  2009-03-27 23:21:17 America/Los_Angeles (hdp)

 * Tests that use JSON were either not checking for the version or checking in a
 * way that was a syntax error.

0.69  2009-03-26 14:16:03 America/Los_Angeles (hdp)

 * Fix RT#32342, deprecated config loses default map (hdp)
 * Fix broken insertion of Catalyst::Request::REST for Action::REST (jshirley)

0.68  2009-03-25 22:33:38 America/Los_Angeles (hdp)

 * Remove prompt for ancient and deprecated Data::Denter from Makefile.PL
 * Remove Data::Dump, which was entirely unused
 * Stop tests from dying with Catalyst 5.80

0.67  2009-03-25 21:59:59 America/Los_Angeles (hdp)

 * (no changes from 0.67_01)

0.67_01  2009-03-25 09:36:00 America/Los_Angeles (hdp)

 * Fix RT#43840, improper app-level config handling
 * Fix RT#42859, 'wrong' Catalyst dependency
 * Fix RT#42025, stepping on custom request classes

0.65  2008-08-20 10:42:00 America/Los_Angeles (jshirley)

 * Fully revamped tests to work without any JSON support
 * Final removal of JSON::Syck
 * Special thanks to jgoulah for helping test this release

0.64  2008-08-13 08:55:00 America/Los_Angeles (jshirley)

 * New dist to fix issue with Module::Install

0.63  2008-07-09 11:16:00 America/Los_Angeles (jshirley)

 * Changing from JSON::Syck to JSON/JSON::XS
 * Refactored tests to be more applicable to current state of affairs

0.62  2008-07-02 07:53:00 America/Los_Angeles (jshirley)

 * Reshipping with current Module::Install included due to error reports
   about failed installs

0.61  2008-06-30 12:28:00 America/Los_Angeles (jshirley)

 * Support official application/json and carp about text/x-json

 * Accepted patch from Luke Saunders for processing all accepted content types

0.60  2008-01-03 17:23:58 America/Los_Angeles (adam)

 * Updated my contact information.

 * Fixed RT#30498 - REST controller references Catalyst without
   loading it first.

 * Fixed RT#32042 - Import of Params::Validate :all plays badly
   with subclasses that have their own validate()

 * Fixed RT#30456 - Debug messages print even with debugging disabled

 * Fixed an issue where YAML::Syck versions 0.92 require $c->request->body to
   be stringified

 * Updated the configuration specifiers to operate more in line with the way
   Catalyst expects.  Most notably component based configuration through
   "Controller::RestClass" now works.  "serialize" at the top level simply
   is suggested defaults that all REST classes inherit.

 * Fixed 'default' serializer to set a valid Content-Type: header.  Fixes
   RT ticket 27949.  Note that behavior has changed -- the default
   serializer must now be specified as a content-type, not as a plugin
   name. (

0.41  2007-05-24 14:01:06 America/Los_Angeles (adam)

 * Moved a bogus $self->class to $c->component($self->class)

0.40  2007-03-09 14:13:29 America/Los_Angeles (adam)

 * Refactored the Content-Type negotiation to live in Catalyst::Request::REST.  (drolsky)
 * Added some useful debugging. (drolsky)
 * Added a View serializer/deserializer, which simply calls the correct
 * Catalyst view.  ('text/html' => [ 'View', 'TT' ]) (claco, adam)

0.31  2006-12-06 00:45:02 America/Los_Angeles (adam)

 * Fixed a bug where we would report a blank content-type negotiation.
 * Added Data::Dump as a dependency.

 * Made the YAML::HTML view automatically append content-type=text/html on
   the resulting URLs.

0.30  2006-12-03 12:24:16 America/Los_Angeles (adam)

 * Updated the Makefile to support optional installation of the different
   Serialization formats.

 * Renamed some of the test cases, since the execution order doesn't

 * Fixed things so that not having a Serialization module returns 415.
 * Fixed things so that failure to Deserialize sends the proper status.
 * Refactored the Plugin loading to Catalyst::Action::SerializeBase.
 * Updated the Documentation.

 * Added a whole raft of serializers. (JSON, all the Data::Serializer
   supported ones, and XML::Simple)

 * Added test cases.

 * Refactored the Catalyst::Action::REST dispatch, so that the default
   method is called before any _METHOD handlers.  In addition, moved
   the 405 Not Implemented handler to be foo_not_implemented, instead
   of the default sub.  (daisuke++ pointed out the inconsistency and
   provided a patch, and I added the foo_not_implemented support)

 * Added in automated OPTIONS handler, which constructs the allow
   header for you, just like the 405 handler.  Can be overridden
   with a normal _METHOD sub.

 * Refactored Test::Rest, so that it uses closures to create the
   very similar $test->method() subs.

 * Added tests for Catalyst::Action::REST.

0.2  2006-11-30 17:14:51 America/Los_Angeles (adam)

 * Added documentation patch from Daisuke Maki (
 * Added dependency patch from Daisuke Maki (

0.1  2006-11-19 16:24:20 America/Los_Angeles (adam)

 * Added status_accepted (Code 202)
 * Added a first pass at documentation.
 * Added in Test Suite
 * Created Catalyst::Action::Serialize and Catalyst::Action::Deserialize
 * Added Data::Serializer actions
 * Added status_created helper method
 * Added more status_ helpers

 * Converted error helpers to return an object instead of plain-text.  It's
   a more consistent model than a text/plain error message.

 * Added logging to 4xx status handlers