bumping revision number and adding entry to changes prior to CPAN release
[catagits/Catalyst-Action-REST.git] / Changes
CommitLineData
3ba4e173 1Revision history for {{$dist->name}}
801ec379 2
3ba4e173 3{{$NEXT}}
eb3ab200 4
86c334d7 51.20 2015-10-29 15:00:00 EST
6 - Make Catalyst::Action::SerializeBase respect Vary headers if previously
7 set by your controller
8
19cd07ec 91.19 2015-02-06 09:40:02-06:00 America/Chicago
10
2f47e474 11 - Make LWP a test dep instead of a hard dep (Fixes GH#3, thanks Alexander
12 Hartmaier for the report!)
1edd63a7 13 - Hard dep on JSON::MaybeXS (Fixes RT#101854, thanks Emmanuel Seyman for the
14 report and Karen Etheridge for help tracking down the cause!)
15
78f164df 161.18 2015-01-20 12:20:46-06:00 America/Chicago
17 - Fix tests on travisci so that Catalyst proper can run on travisci
18 (Thanks André Walker!)
19
eb3ab200 201.17 2014-10-23 19:58:46-05:00 America/Chicago
27829ab7 21 - Make 3xx status codes skip serialization when there is no data to serialize
ffef3497 22 (Thanks Jesse Sheidlower!)
c3d115c8 23
241.16 2014-09-12 13:21:43-05:00 America/Chicago
27829ab7 25 - Switch from JSON to JSON::MaybeXS to get a better choice of JSON parsers.
3ba4e173 26
0aceaa9b 271.15 2014-05-07 09:02:44-05:00 CST6CDT
28
27829ab7 29 - Added new status_see_other method for returning a 303 redirect.
30 - Added new status_moved method for returning a 301 redirect. (Matthew Keller)
0aceaa9b 31
9b5736d5 321.14 2013-12-27 15:32:19 America/Chicago
33
27829ab7 34 - Stop prompting for features at install time
da6b5a45 35
3ba4e173 361.13 2013-11-08 09:40:00 EST
7566d72f 37
27829ab7 38 - Fix tests to skip if YAML::Syck is not installed (Arthur Axel fREW Schmidt)
801ec379 39
3ba4e173 401.12 2013-09-03 13:00:00 EST
47c3e6b3 41
42 WARNING BACK COMPAT BREAKAGE FOLLOWS
43
27829ab7 44 Removed The YAML and HTML parser from the distro. You
47c3e6b3 45 should install these if you actually use them. They are listed as
46 optional dependencies going forward.
47
48 This is possibly a breaking change, but necessary for security and
49 considered acceptable since those formats have not generally
50 become preferred for web services.
51
52 In addition, the default de/serialization mappings for HTML and YAML
53 have been removed. You can add that back by adding the following to
54 you Configuration for the subclass of Catalyst::Controller::REST -
55
56 package Foo::Controller::Bar;
57
58 use Moose;
59 use namespace::autoclean;
60
61 BEGIN { extends 'Catalyst::Controller::REST' }
62 __PACKAGE__->config(
63 'map' => {
64 'text/html' => 'YAML::HTML',
65 'text/x-yaml' => 'YAML',
66 },
67 );
68
69 You should do this if you are using these de/serialization formats.
70
3ba4e173 711.11 2013-06-16 15:23:03 BST
72
27829ab7 73 - Fix infinite recursion in tests under Catalyst 5.90040
3ba4e173 74
751.10 2013-04-22 14:36:53 BST
76
27829ab7 77 - Use YAML rather than JSON in basic tests
e0323f6a 78
3ba4e173 791.09 2013-04-19 13:34:38 BST
81b9fff3 80
27829ab7 81 - Don't load Data::Serializer unnecessarily in tests
45d02f45 82
3ba4e173 831.08 2013-04-16 08:33:00 BST
1bb213fc 84
27829ab7 85 - Factor Data::Serializable into it's own dist to stop breakages.
1bb213fc 86
3ba4e173 87 If you use any of:
1bb213fc 88
3ba4e173 89 * Data::Dumper
90 * Data::Denter
91 * Data::Taxi
92 * Config::General
93 * PHP::Serialization
94
95 You'll need to install Catalyst-Action-Serialize-Data-Serializer and add the
96 appropriate lines to your controller config. Said lines may be:
1bb213fc 97
98 'text/x-data-dumper' => [ 'Data::Serializer', 'Data::Dumper' ],
99 'text/x-data-denter' => [ 'Data::Serializer', 'Data::Denter' ],
100 'text/x-data-taxi' => [ 'Data::Serializer', 'Data::Taxi' ],
101 'text/x-config-general' => [ 'Data::Serializer', 'Config::General' ],
102 'text/x-php-serialization' => [ 'Data::Serializer', 'PHP::Serialization' ],
103
3ba4e173 1041.07 2013-04-11 20:20:00 BST
105
27829ab7 106 - Don't serialize if a view is explicitly set.
3ba4e173 107
108 - If the controller sets the view in $c->stash->{current_view} or
109 $c->stash->{current_view_instance}, then it is explicitly requesting a
110 certain kind of serialization and C::A::Serialize shouldn't override
111 that.
112
27829ab7 113 - Remove Storable and FreezeThaw from the list
3ba4e173 114 of serialization methods offered by default, and
115 from the docs - they're totally unsafe :/
116
1171.06 2012-12-11 22:04:00 UTC
118
27829ab7 119 - Sort list of allowed methods. RT#81825
3ba4e173 120
1211.05 2012-07-02 20:13:00 BST
122
27829ab7 123 - Bugfix get_allowed_methods list:
3ba4e173 124 - include HEAD
125 - remove "not_implemented"
126
1271.04 2012-06-30 10:25:00 BST
128
27829ab7 129 - Bugfix to _dispatch_rest_method
3ba4e173 130
1311.03 2012-06-28 00:40:00 BST
132
27829ab7 133 - Expose _get_allowed_methods to the API (wreis)
3ba4e173 134
27829ab7 135 - Fix default OPTIONS handler: As the ->body is defined, then serialization
3ba4e173 136 won't happen and we don't get wrong responses. (wreis)
137
27829ab7 138 - Add default HEAD handler: auto dispatches to _GET method if it exists (wreis)
3ba4e173 139
1401.02 2012-06-05 22:23:00 BST
141
27829ab7 142 - Fix forwarded REST methods, e.g. foo_GET to be more
3ba4e173 143 correctly displayed as a forward in the stats info.
144
27829ab7 145 - Make public response building methods for errors
3ba4e173 146 _unsupported_media_type and _serialize_bad_request which
147 can be extended from an action-role to return custom
148 error response.
149
1501.01 2012-05-29 20:19:00 BST
151
27829ab7 152 - Add Catalyst::Action::Deserialize::JSON::XS
3ba4e173 153
27829ab7 154 - Fix JSON::XS useage to depend on JSON.pm v2.0, and rely on the
3ba4e173 155 fact that can be backed by XS code, by explicitly setting
156 $ENV{'PERL_JSON_BACKEND'} = 2
157
1581.00 2012-04-13 09:31:00 BST
159
27829ab7 160 - Repack without auto_include to stop Module::Install inlining
3ba4e173 161 Test::More without Test::Builder. RT#76524
162
1630.99 2012-02-28 09:09:00 UTC
164
27829ab7 165 - Repack with new Module::Install to stop depending on an unnecessary
3ba4e173 166 ExtUtils::MakeMaker version.
167
1680.98 2012-02-21 11:40:00 UTC
6e7da253 169
27829ab7 170 - More fixes as per last release.
6e7da253 171
3ba4e173 1720.97 2012-02-21 09:58:00 UTC
7b46eb07 173
27829ab7 174 - Fix test with latest Catalyst version which passes _log into
3ba4e173 175 requests.
04f96b73 176
3ba4e173 1770.96 2012-01-20 11:22:00 UTC
91bb5224 178
27829ab7 179 - Added fix for RT 63537 (from Gerv) and tests to check it.
6da8e448 180
3ba4e173 1810.95 2012-01-04 19:34:00 UTC
c8ca5f59 182
27829ab7 183 - Fix regex for JSONP parameter name to be able to include the . character
3ba4e173 184 in Catalyst::Action::Serialize::JSONP. RT#73741
c8ca5f59 185
27829ab7 186 - Add optional location parameter to status_accepted handler. RT#73691 (ghenry)
c8ca5f59 187
3ba4e173 1880.94 2011-12-09 08:35:00 UTC
3c4306f2 189
27829ab7 190 - Add 403 Forbidden and 302 Not Found status methods to
3ba4e173 191 Catalyst::Controller::REST (Caleb Cushing)
d1158d58 192
3ba4e173 1930.93 2011-10-12 11:37:00 America/Chicago
fcc4f3f2 194
27829ab7 195 - Add a "Callback" serializer/deserializer to allow for more customization in
3ba4e173 196 how the REST data is parsed/generated (bphillips)
fcc4f3f2 197
3ba4e173 1980.92 2011-10-01 11:04:00 BST
df5f9ffc 199
27829ab7 200 - Add a Catalyst::Action::DeserializeMultiPart, allowing one part of a multipart
3ba4e173 201 request to be deserialized as the REST data (allowing other parts to be used for
202 file uploads, for example) (bphillips)
3ed677b1 203
3ba4e173 2040.91 2011-08-04 14:37:21 Europe/Berlin
351f252f 205
27829ab7 206 - For the deserialization action class, make the HTTP methods it operates on
3ba4e173 207 configurable on a per-action level (plu, rafl).
1f22d6b3 208
3ba4e173 2090.90 2011-02-25 13:56:00 UTC
8aa1a2ee 210
27829ab7 211 - Remove test which is no longer applicable and fails in the latest Catalyst
3ba4e173 212 release.
f2d34339 213
3ba4e173 2140.89 2011-01-24 21:57:42 UTC
259c53c7 215
27829ab7 216 - All classes are now made immutable. (Dave Rolsky)
f51d80cd 217
27829ab7 218 - Added a Catalyst::Action::REST::ForBrowsers class. This will try to dispatch
3ba4e173 219 GET requests to a foo_GET_html method before trying foo_GET. (Dave Rolsky)
1c4b501b 220
3ba4e173 2210.88 2011-01-11 23:07:00 UTC
8894935c 222
27829ab7 223 - Fix documentation for overriding Serialize and Deserialize actions
3ba4e173 224 in Catalyst::Controller::REST.
04eaf278 225
27829ab7 226 - Avoid warning with empty response bodies and new Catalyst version
3ba4e173 227 (>= 5.80030)
48ff1e96 228
27829ab7 229 - Returning a body of '' is now possible - Catalyst::Action::Serialize
3ba4e173 230 acts like Catalyst::Action::RenderView (>= 0.16) by using the has_body
231 predicate in Catalyst::Response (>= 5.80030)
84b1ebe6 232
3ba4e173 2330.87 2010-11-03 19:46:00 UTC
d5acc73a 234
27829ab7 235 - Fix Request class role when used with new Moose and other request
3ba4e173 236 class roles.
355d4385 237
3ba4e173 2380.86 2010-09-01 23:14:00 BST
786c212f 239
27829ab7 240 - Add rest_serializer_json_options config key useable to set options
3ba4e173 241 like relaxed => 1 to be passed to the JSON serializer (Ton Voon)
786c212f 242
27829ab7 243 - Make Data::Dumper unserializer safer by using a Safe compartment (Ton Voon)
e527bba3 244
3ba4e173 2450.85 2010-05-13 10:09:19 Europe/Berlin
e527bba3 246
27829ab7 247 - Make Catalyst::Action::Serialize::View return directly rather than serializing
3ba4e173 248 a response for 3XX status codes. This stops back-compat breakage from the
249 previous change (in 0.84), whilst also allowing actual data serializers
250 to still handle 3XX.
ad46030d 251
27829ab7 252 - Fix docs in Catalyst::TraitFor::Request::REST::ForBrowsers. (RT#54983)
0fd45d2a 253
3ba4e173 2540.84 2010-05-06 09:27:56 BST
0fd45d2a 255
27829ab7 256 - Revert always using a trait rather than Catalyst::Request::REST to improve
3ba4e173 257 debug messages.
96eccfeb 258
27829ab7 259 - Add a status_multiple_choices helper method to the Controller base class.
96eccfeb 260
27829ab7 261 - Allow 3XX responses to be serialized.
3accd912 262
3ba4e173 2630.83 2010-02-08 22:17:12 UTC
5578f739 264
27829ab7 265 - Make it possible to deserialize a request with a DELETE method. This probably
3ba4e173 266 breaks 'strict' REST guidelines, but is useful for being able to delete multiple
267 resources from a single call by providing a batch delete method.
96a61a60 268
27829ab7 269 - Remove JSONP from the list of default serializers (RT#54336)
3ba4e173 270 Fix MANIFEST (RT#54408)
96a61a60 271
3ba4e173 2720.82 2010-02-04 22:31:57 UTC
8ff24288 273
27829ab7 274 - Integrated Catalyst::Request::REST::ForBrowsers as
3ba4e173 275 Catalyst::TraitFor::Request::ForBrowsers. (Dave Rolsky)
8ff24288 276
27829ab7 277 - Clarified docs so that they encourage the use of the request traits, rather
3ba4e173 278 than using Catalyst::Request::REST. (Dave Rolsky)
8ff24288 279
27829ab7 280 - When Catalyst::Action::REST or Controller::REST automatically add the trait,
3ba4e173 281 your request class will no longer end up getting set to
282 Catalyst::Request::REST. Instead, creates an anon class with the appropriate
283 role. (Dave Rolsky)
04675068 284
27829ab7 285 - Shut up log output from the tests. (Dave Rolsky)
04675068 286
27829ab7 287 - Added a $VERSION to every module, mostly to make sure that when people
3ba4e173 288 install Catalyst::Request::REST::ForBrowsers, they get the version in this
289 distro. (Dave Rolsky)
04675068 290
27829ab7 291 - Change Catalyst::Action::Serialize, Catalyst::Action::Deserialize and
3ba4e173 292 Catalyst::Action::SerializeBase to be more Moose like.
04675068 293
27829ab7 294 - Fix JSON and JSON::XS to encode_blessed. (fREW)
295 - Fix Catalyst::Action::Serialize to use objects instead of classes. (fREW)
296 - Fix doc nits. (RT#53780)
04675068 297
3ba4e173 2980.81 2010-01-14 20:56:00 UTC
890738ab 299
27829ab7 300 - Add a JSONP serialization type.
05009b91 301
3ba4e173 3020.80 2009-12-19 14:54:00 UTC
2b1751a1 303
27829ab7 304 - Convert all classes to Moose
2b1751a1 305
27829ab7 306 - Change Catalyst::Request::REST to be a mostly empty class, with
3ba4e173 307 all the functionality in Catalyst::TraitFor::Request::REST
26b59bcb 308
27829ab7 309 - Simplify _get_allowed_methods method (aristotle)
732d8f5f 310
27829ab7 311 - Rework serializer return so that serializers throw an exception in
3ba4e173 312 the case of issues serializing the data (hobbs).
4f7a48d1 313
3ba4e173 3140.79 2009-12-11 01:08:00 UTC
a400ef8b 315
27829ab7 316 - Cope with invalid (missing required q parameter) header like:
3ba4e173 317 application/json; charset="utf-8"
489ee3ed 318
27829ab7 319 - Fix documentation to not mention deprecated things and generally be
3ba4e173 320 in better style.
489ee3ed 321
27829ab7 322 - Make author information consistant and only in one module.
e1844cd9 323
3ba4e173 3240.78 2009-09-28 15:01:03 BST
a05bebdc 325
27829ab7 326 - Require Moose for the tests (RT#50066).
5ebf67a4 327
3ba4e173 3280.77 2009-08-27 02:21:09 BST
5bbe8fb2 329
27829ab7 330 - Allow dispatching to Catalyst Actions, for use with ActionClasses
3ba4e173 331 etc - fREW
d3f3a2ed 332
27829ab7 333 - Fix test if CATALYST_DEBUG environment variable is set
d3f3a2ed 334
3ba4e173 3350.76 2009-08-21 21:20:52 BST
f3394d8c 336
27829ab7 337 - Added two new status response helpers (202 no content and 410 gone),
3ba4e173 338 and tests - Franck Cuny
5ebf67a4 339
3ba4e173 3400.75 2009-08-17 14:07:41 BST
9eb6ca8b 341
27829ab7 342 - Fix optional test failures in catalyst-action-serialize-accept.t
343 - Added a serializer for JSON::XS
344 - Made test independent of YAML::Syck bugs (dandv)
4ee24376 345
3ba4e173 3460.74 2009-07-22 23:49:16 BST (t0m)
c42820ae 347
27829ab7 348 - Switch from NEXT to MRO::Compat (agladdish).
428ec4a2 349
27829ab7 350 - Add display of additional REST actions in the stats, and also fix a warning
3ba4e173 351 in Catalyst 5.80 when you forward to another action from inside an
352 action_FOO method (as it was confusing the stats).
428ec4a2 353
27829ab7 354 - POD fixes
355 - Catalyst::Action::REST no longer @ISA Catalyst or Catalyst::Controller.
356 - Change constructor to call next::method instead of SUPER::
357 - Change method used to find the application class to be more correct
f41ab757 358
3ba4e173 3590.73 2009-06-27 20:20:09 America/New_York (hdp)
546f2871 360
27829ab7 361 - Packaging fixes
546f2871 362
3ba4e173 3630.72 2009-06-25 14:52:29 America/New_York (hdp)
d1e10509 364
27829ab7 365 - Refresh Module::Install
db8bb647 366
3ba4e173 3670.71 2009-03-28 09:16:09 America/Los_Angeles (hdp)
665a446d 368
27829ab7 369 - Fix RT#44641, missing documented 'end' action
0566b5e4 370
3ba4e173 3710.70 2009-03-27 23:21:17 America/Los_Angeles (hdp)
0566b5e4 372
27829ab7 373 - Tests that use JSON were either not checking for the version or checking in a
374 - way that was a syntax error.
c4ab3598 375
3ba4e173 3760.69 2009-03-26 14:16:03 America/Los_Angeles (hdp)
cbb06078 377
27829ab7 378 - Fix RT#32342, deprecated config loses default map (hdp)
379 - Fix broken insertion of Catalyst::Request::REST for Action::REST (jshirley)
bb55dba1 380
3ba4e173 3810.68 2009-03-25 22:33:38 America/Los_Angeles (hdp)
8088a6f3 382
27829ab7 383 - Remove prompt for ancient and deprecated Data::Denter from Makefile.PL
384 - Remove Data::Dump, which was entirely unused
385 - Stop tests from dying with Catalyst 5.80
ef7fdb48 386
3ba4e173 3870.67 2009-03-25 21:59:59 America/Los_Angeles (hdp)
888f25e3 388
27829ab7 389 - (no changes from 0.67_01)
8b010556 390
3ba4e173 3910.67_01 2009-03-25 09:36:00 America/Los_Angeles (hdp)
7b8c5be2 392
27829ab7 393 - Fix RT#43840, improper app-level config handling
394 - Fix RT#42859, 'wrong' Catalyst dependency
395 - Fix RT#42025, stepping on custom request classes
3d38a43f 396
3ba4e173 3970.65 2008-08-20 10:42:00 America/Los_Angeles (jshirley)
b946af8e 398
27829ab7 399 - Fully revamped tests to work without any JSON support
400 - Final removal of JSON::Syck
401 - Special thanks to jgoulah for helping test this release
bc48916f 402
3ba4e173 4030.64 2008-08-13 08:55:00 America/Los_Angeles (jshirley)
2f7533ed 404
27829ab7 405 - New dist to fix issue with Module::Install
6023cdb2 406
3ba4e173 4070.63 2008-07-09 11:16:00 America/Los_Angeles (jshirley)
ebba5325 408
27829ab7 409 - Changing from JSON::Syck to JSON/JSON::XS
410 - Refactored tests to be more applicable to current state of affairs
df26b361 411
3ba4e173 4120.62 2008-07-02 07:53:00 America/Los_Angeles (jshirley)
832e768d 413
27829ab7 414 - Reshipping with current Module::Install included due to error reports
3ba4e173 415 about failed installs
d6fb033c 416
3ba4e173 4170.61 2008-06-30 12:28:00 America/Los_Angeles (jshirley)
9f16ba15 418
27829ab7 419 - Support official application/json and carp about text/x-json
d4611771 420
27829ab7 421 - Accepted patch from Luke Saunders for processing all accepted content types
bc343d3a 422
3ba4e173 4230.60 2008-01-03 17:23:58 America/Los_Angeles (adam)
424
27829ab7 425 - Updated my contact information.
3ba4e173 426
27829ab7 427 - Fixed RT#30498 - REST controller references Catalyst without
3ba4e173 428 loading it first.
429
27829ab7 430 - Fixed RT#32042 - Import of Params::Validate :all plays badly
3ba4e173 431 with subclasses that have their own validate()
432
27829ab7 433 - Fixed RT#30456 - Debug messages print even with debugging disabled
3ba4e173 434
27829ab7 435 - Fixed an issue where YAML::Syck versions 0.92 require $c->request->body to
3ba4e173 436 be stringified
437
27829ab7 438 - Updated the configuration specifiers to operate more in line with the way
7d5e38b4 439 Catalyst expects. Most notably component based configuration through
440 "Controller::RestClass" now works. "serialize" at the top level simply
441 is suggested defaults that all REST classes inherit.
bc343d3a 442
27829ab7 443 - Fixed 'default' serializer to set a valid Content-Type: header. Fixes
7d5e38b4 444 RT ticket 27949. Note that behavior has changed -- the default
445 serializer must now be specified as a content-type, not as a plugin
446 name. (dmo@roaringpenguin.com)
367b3ff4 447
3ba4e173 4480.41 2007-05-24 14:01:06 America/Los_Angeles (adam)
449
27829ab7 450 - Moved a bogus $self->class to $c->component($self->class)
3ba4e173 451
4520.40 2007-03-09 14:13:29 America/Los_Angeles (adam)
453
27829ab7 454 - Refactored the Content-Type negotiation to live in Catalyst::Request::REST. (drolsky)
455 - Added some useful debugging. (drolsky)
456 - Added a View serializer/deserializer, which simply calls the correct
457 - Catalyst view. ('text/html' => [ 'View', 'TT' ]) (claco, adam)
3ba4e173 458
4590.31 2006-12-06 00:45:02 America/Los_Angeles (adam)
460
27829ab7 461 - Fixed a bug where we would report a blank content-type negotiation.
462 - Added Data::Dump as a dependency.
3ba4e173 463
27829ab7 464 - Made the YAML::HTML view automatically append content-type=text/html on
3ba4e173 465 the resulting URLs.
466
4670.30 2006-12-03 12:24:16 America/Los_Angeles (adam)
468
27829ab7 469 - Updated the Makefile to support optional installation of the different
3ba4e173 470 Serialization formats.
471
27829ab7 472 - Renamed some of the test cases, since the execution order doesn't
3ba4e173 473 matter.
474
27829ab7 475 - Fixed things so that not having a Serialization module returns 415.
476 - Fixed things so that failure to Deserialize sends the proper status.
477 - Refactored the Plugin loading to Catalyst::Action::SerializeBase.
478 - Updated the Documentation.
3ba4e173 479
27829ab7 480 - Added a whole raft of serializers. (JSON, all the Data::Serializer
3ba4e173 481 supported ones, and XML::Simple)
482
27829ab7 483 - Added test cases.
3ba4e173 484
27829ab7 485 - Refactored the Catalyst::Action::REST dispatch, so that the default
3ba4e173 486 method is called before any _METHOD handlers. In addition, moved
487 the 405 Not Implemented handler to be foo_not_implemented, instead
488 of the default sub. (daisuke++ pointed out the inconsistency and
489 provided a patch, and I added the foo_not_implemented support)
490
27829ab7 491 - Added in automated OPTIONS handler, which constructs the allow
3ba4e173 492 header for you, just like the 405 handler. Can be overridden
493 with a normal _METHOD sub.
494
27829ab7 495 - Refactored Test::Rest, so that it uses closures to create the
3ba4e173 496 very similar $test->method() subs.
497
27829ab7 498 - Added tests for Catalyst::Action::REST.
3ba4e173 499
5000.2 2006-11-30 17:14:51 America/Los_Angeles (adam)
501
27829ab7 502 - Added documentation patch from Daisuke Maki (daisuke@endeworks.jp)
503 - Added dependency patch from Daisuke Maki (daisuke@endeworks.jp)
3ba4e173 504
5050.1 2006-11-19 16:24:20 America/Los_Angeles (adam)
506
27829ab7 507 - Added status_accepted (Code 202)
508 - Added a first pass at documentation.
509 - Added in Test Suite
510 - Created Catalyst::Action::Serialize and Catalyst::Action::Deserialize
511 - Added Data::Serializer actions
512 - Added status_created helper method
513 - Added more status_ helpers
3ba4e173 514
27829ab7 515 - Converted error helpers to return an object instead of plain-text. It's
3ba4e173 516 a more consistent model than a text/plain error message.
517
27829ab7 518 - Added logging to 4xx status handlers
bdc54939 519