Revision history for Web::MREST
0.01 2014-12-19 21:01 CET
- basic module setup with code (mainly Resource.pm) taken from
App::Dochazka::REST version 0.356
- MREST.pm: write POD
0.02 2014-12-22 09:52 CET
- remove auto-generated build files that I committed accidentally
- MREST.pm: work on POD
- Resource.pm: get rid of is_authorized and associated routines
0.03 2014-12-22 16:03 CET
- start development
0.04 2014-12-23 11:42 CET
- rename from App::MREST to Web::MREST
- get t/503-Service-Unavailable.t to work as desired
0.05 2014-12-23 16:50 CET
- no longer dying in allowed_methods
0.06 2014-12-23 21:34 CET
- Build.PL: add Module::Runtime dependency
- MREST_Config.pm: add MREST_APPLICATION_MODULE
- dispatch_MetaConfig.pm: document format of resource definitions; re-structure
the resources to illustrate how individual resources can have subresources
for a tree structure; add MREST_ROOT_RESOURCE
- Resource.pm: fix bugs in resource initialization routines
- t/405-Method-Not-Allowed.t: now that allowed_methods is doing something, add
some tests
0.07 2014-12-29 15:39 CET
- bin/mrest: now takes app distro as parameter
- config/dispatch_MetaConfig.pm: minor fixes; add root resource definition
- MREST.pm: work on POD, make init take a PARAMHASH so application can
get its own meta and site parameters loaded
- Resource.pm: remove Clone dependency; adapt to flat structure of resource
definitions
- t/405-Method-Not-Allowed.t: fix tests
- t/method_not_allowed_override.t: demonstrate how a unit can define its own
resources and generate HTTP requests against them
0.08 2014-12-30 15:30 CET
- config/HTTP_Status_Message_en.conf: add HTTP status codes
- MREST.pm: work on POD
- Resource.pm: implement 'mrest_declare_error' method; use it in
allowed_methods; change all instances of $self->response->body to
$self->response->content; add error-handling code to 'finish_request' method;
start declaring HTTP errors using the new method
- Test.pm: in 'status_from_json' we call 'from_json' which might die - handle
this situation more gracefully
0.09 2014-12-30 18:35 CET
- implement malformed_request, is_authorized, forbidden
- rename "mrest_declare_error" to "mrest_declare_status" so we
can "declare" a successful status, too
- try to figure out why CLI parser dies when we return a "declared" 500 status
(something strange is afoot)
0.10 2014-12-31 09:54 CET
- add dispatch-specific config files and module
- bin/mrest: disable StackTrace middleware as it was making it difficult
to return sensible 500 error entities
- Resource.pm: turn warnings into errors; add 'mrest_resource_exists' method;
"GET bugreport" works
0.11 2014-12-31 16:11 CET
- bin/mrest: turn on Web::Machine tracing
- HTTP_Status_Message_en.conf: add 501
- MREST_Config.pm: support OPTIONS method
- get rid of bogus dispatch_Config.pm innards
- MREST.pm: work on POD
- Resource.pm: too much work to describe here
0.12 2014-12-31 23:24 CET
- Resource.pm: expand 'status_declared' method; work on 'malformed_request' method;
call handler in a try block
- config/MREST_Config.pm: expand supported options - break tests
- t/request_body_read.t: write what seem to be some sensible tests that pass
- t/: address some of the brokenness
0.13 2015-01-02 14:33 CET
- Util.pm: for pod_to_html
- Dispatch/Docu.pm: handlers for docu resources
- t/: new units t/resources/docu.t and t/4xx/415-Unsupported-Media-Type.t
- get HTML responses to work
- get docu resources to work
- MREST.pm: POD checked up to B5
- Dispatch.pm: add 'noop' handler
- Resource.pm: basic handling/checking of 'Content-Length' and 'Content-Type'
headers
0.14 2015-01-02 15:19 CET
- in valid_content_headers, actually check the headers against the valid
set (taken from RFC2616)
0.15 2015-01-03 22:15 CET
- handle and test 406 Not Acceptable
- work on POD
- take "content types provided" from configuration
0.16 2015-01-05 16:01 CET
- dispatch_MetaConfig.pm, Dispatch.pm: add 'test/post_is_create/:bool' resource
- MREST.pm: work on POD
- Resource.pm: implement 'post_is_create' and 'create_path' methods
- t/2xx/201.t: basic unit tests for 'post_is_create'
0.17 2015-01-06 08:28 CET
- resource handlers are now method names
- bin/mrest: take distro name and name of module to bless the application object into
- dispatch_MetaConfig.pm: work on documentation; remove module name from handler property;
generalize 'test' resource
- MREST.pm: work on POD
- Dispatch.pm: inherit from Web::MREST::Resource; work on 'echo' handler; generalize
'test' handler so it works for GET, POST, PUT and DELETE
- Resource.pm: execute handler via method call instead of function call
- Test.pm, t/: start adapting tests to current state
0.18 2015-01-06 13:44 CET
- add 'forbidden' resource and test for 403 Forbidden
- add site params to control "cache disablement" headers
- call handlers 'handler_foo' to distinguish them from resource names
- get rid of 'help' resource; rename 'not_implemented' to 'noop'
0.19 2015-01-07 16:38 CET
- work on POD
- change how resource handlers are called
- start adapting the resource handlers (WIP)
- debug Resources.pm (WIP)
0.20 2015-01-07 21:43 CET
- Resource.pm: call resource targets twice (once to determine resource
existence and a second time - as part of response generation - to get the
status)
- Dispatch.pm: adapt 'bugreport' and 'docu/..' resources to the latest change
in how resource targets are called
0.21 2015-01-08 09:49 CET
- add t/2xx/200-OK.t
- Dispatch.pm, Resource.pm: fix post_is_create, create_path
- Test.pm, t/: add low-level 'llreq' routine; make req use it
0.211 2015-01-10 08:28 CET
- standardize terminology ("request entity" instead of "request body")
- remove 'forbidden' resource definition and handler: they are not
necessary to test 403 Forbidden response
- add new modules that override 'forbidden' and 'is_authorized' methods
and associated unit tests
- work on POD
- clarify how resource_exists is supposed to work and adapt 'handler_test'
- Resource.pm: remove bogus forbidden handling code, clean up
'known_content_type', push content type onto context; add
'web_machine_metadata' accessor; work on process_post method
0.212 2015-01-12 09:01 CET
- Resource.pm: add 'documentation' to hard-coded list of not-to-be-expanded
properties
- Test.pm: make 'llreq' handle headers argument properly, including assigning
default headers if no arguments are provided
- t/: adapt tests in 2xx, 4xx, and 5xx to current code state
0.213 2015-01-12 16:00 CET
- config/: define resources in a site, rather than meta, config file
- MANIFEST: fix omissions
- Dispatch.pm: fix 'handler_echo'
- t/method_not_allowed_override.t: broken unit - skip it for now
0.214 2015-01-12 19:37 CET
- Resource.pm: split off init_router stuff into a separate module
- Test.pm: make req really use llreq; fix a warning
0.215 2015-01-13 08:53 CET
- Test.pm, t/: make initialize_unit take a PARAMHASH and prepare it to take a
sitedir option
0.216 2015-01-13 10:05 CET
- Resource.pm: split off "Web Services introduction" into a separate module
- MREST.pm: work on POD
0.217 2015-01-13 12:03 CET
- find and fix some lingering instances of 'request_body' (renamed to 'request_entity')
- t/dispatch/docu.t: 'documentation_format' property renamed to 'format'
- test suite running cleanly
0.218 2015-01-13 15:05 CET
- InitRouter.pm: take list of non-expandable properties from a config param
- MREST.pm: make 'init' take 'sitedir' property instead of inappropriately
named 'path'
- t/method_not_allowed_override.t: revive the unit
0.219 2015-01-14 06:20 CET
- dispatch_Config.pm: add 'docu/text' resource
- Dispatch.pm: resource handlers now called with ordinal number of pass - adapt
and clean up; make 'handler_param_get' handle second pass properly; in
'handler_docu', return 400 if request entity missing, improve error explanations;
adapt 'handler_echo' to current state
- Util.pm: fix a glaring oversight
0.220 2015-01-14 16:43 CET
- Build.PL, bin/mrest: use Plack::Middleware::LogErrors to redirect psgix.error
to our logger object
- Resource.pm: use the new 'get_acceptable_content_type_handler' method from
https://github.com/stevan/webmachine-perl/pull/32
0.221 2015-01-15 09:14 CET
- Dispatch.pm: have only one handler for all 'param/...' requests
- Resource.pm: add accessor for declared status code; add methods for running
request handler and response generator; make request handler call the
response generator; properly handle empty requests in request handler;
process_post just calls the _run_request_handler method; remove deprecated
web_machine_metadata method
0.222 2015-01-15 16:14 CET
- Resource.pm: clarify possible return values from request handler and response
generator; rearrange various routines so the order in which they appear in the
source file matches more closely the order in which requests propagate through
the FSM
0.223 2015-01-16 08:09 CET
- split off Entity.pm from Resource.pm
- MREST.pm: work on POD
- Resource.pm: provide a means to muffle debug-level log messages;
start organizing methods according to which "part" of the FSM they
belong to; move _make_json to Util.pm
0.224 2015-01-16 09:36 CET
- Entity.pm: add boilerplate
- Resource.pm: make 'context' initialize the context property, if needed, even
when called as an accessor; do not decode_utf8 the path_info for now
- Util.pm: use and export $JSON singleton; comment out 'make_json' routine as
it might not be needed
0.225 2015-01-16 11:28 CET
- dispatch_Config.pm, Dispatch.pm: allow DELETE method on 'param/...' resource
- Entity.pm: implement get_acceptable_content_type_handler method for which
patch is pending upstream; rationalize PUT/POST request processing
- Resource.pm: streamline process_post
0.226 2015-01-16 14:26 CET
- MREST_Config.pm: remove MREST_CONTENT_TYPES_PROVIDED
- Entity.pm: rename _render_response_html -> mrest_generate_response_html;
rename _render_response_json -> mrest_generate_response_json; add
generic mrest_generate_response method
0.227 2015-01-16 14:35 CET
- Resource.pm: include entity in responses to DELETE requests
0.228 2015-01-16 14:58 CET
t/dispatch/param.t: add test cases for 'param/...' resource
0.229 2015-01-16 15:33 CET
- Resource.pm: make declared status be an App::CELL::Status object
from the very beginning - this simplifies finish_request
- t/: adapt tests
0.230 2015-01-16 15:46 CET
- Resource.pm: make mrest_declare_status optionally take a ready-made
App::CELL::Status object
0.231 2015-01-16 16:02 CET
- t/dispatch/noop.t: add test cases for 'noop' resource
- dispatch_Config.pm: cleanup
- Dispatch.pm: fix up the 'handler_noop' method
0.232 2015-01-16 22:00 CET
- Dispatch.pm, t/dispatch/version.t: add handler and test cases for the
'version' resource
- MREST.pm: add a 'version' method to provide access to $VERSION package variable
0.233 2015-01-18 16:19 CET
- bring in CLI from App::Dochazka::CLI (0.076)
0.234 2015-01-18 23:09 CET
- dispatch_Config.pm: fix 'param/..' resource definition; make root handler
be 'handle_noop'
- InitRouter.pm: work on POD; find some kind of weird race condition - needs
a closer look
0.235 2015-01-20 07:22 CET
- Build.PL: add Web::MREST::CLI::Parser module directory and move
CLI configuration files to it
- bin/mrest-cli: re-enable logging, add some print statements for
better orientation, change prompt to Web::MREST::CLI::Parser
- config_cli/: log to mrest-cli.log in home directory
- CLI/UserAgent.pm: add some comments
- InitRouter.pm: add debug log messages
0.236 2015-01-20 17:53 CET
- Resource.pm, InitRouter.pm: get root resource to work
- t/dispatch/root_resource.t: tests for the root resource
0.237 2015-01-26 15:51 CET
- Test.pm: do not add content-length in llreq
- MREST.pm: work on POD
- bin/mrest-cli: load config parameters only once
0.238 2015-01-28 18:04 CET
- Build.PL, config/: consolidate server and CLI configuration files
- implement new 'configinfo' resource for displaying contents of
CELL_META_SITEDIR_LIST
0.239 2015-01-29 09:57 CET
- define root resource in (almost) the same way as all the other resources,
- the name of the root resource is '/'
- definitions of top-level resources must include parent => '/'
0.240 2015-01-29 14:42 CET
- Dispatch.pm: bring in resource definitions from dispatch_Config.pm,
and init_router function from InitRouter.pm
- eliminate all references to $meta->RESOURCES - this data is now stored in the
$resources package variable in InitRouter.pm
- remove obsoleted dispatch_Config.pm (integrate documentation into MREST.pm)
- t/: remove two units broken by this round of modifications
0.241 2015-01-29 17:43 CET
- 503.pm: add file needed for test
- Resource.pm: call init_router earlier
0.242 2015-01-30 07:50 CET
- CLI/UserAgent.pm: handle exceptions more gracefully
0.243 2015-02-02 10:11 CET
- bin/mrest: disable StackTrace by default since we are catching exceptions now
- bin/mrest-cli: tweak how responses are displayed
- InitRouter.pm: fix to handle case when a resource property is set to undef
- Resource.pm: when Web::Machine catches an exception, trigger a 500 and provide
a response entity with the text of the exception
0.244 2015-02-02 16:46 CET
- report HTTP method in declared statuses
- improve documentation of docu resource
0.245 2015-02-02 21:24 CET
- Resource.pm: add explicit 'create_path_after_handler' method
0.246 2015-02-03 07:24 CET
- Entity.pm: declare status when response generator is not OK
- InitRouter.pm: tweak log messages
0.247 2015-02-04 17:55 CET
- Resource.pm: be careful that create_path always returns a string
0.248 2015-02-11 10:18 CET
- Resource.pm: add 'nullify_declared_status' method
0.249 2015-02-11 14:04 CET
- Entity.pm: insert Location header only if resource does not exist
- Test.pm: put Location header in return value (App::CELL::Status object) so we
can test for it
- t/dispatch/param.t: test for correct response code (201 or 200) and Location
header in PUT requests that create/modify a resource; add more test cases
0.250 2015-02-12 07:32 CET
- InitRouter.pm: make debug message more useful
0.251 2015-02-12 09:19 CET
- CLI/UserAgent.pm: use URI::Escape to escape % characters
- Resource.pm: make 'mrest_declare_status' take optional 'args' property
so we can specify explanation as a message code
0.252 2015-02-16 21:45 CET
- InitRouter.pm: expand list of non-expandable properties
0.253 2015-02-17 18:25 CET
- MREST.pm: prep POD for release (WIP)
- CLI/Parser.pm: enable root resource
- MREST/Dispatch.pm: eliminate setting of 'resource_exists' in the response
generator as I am not sure if this is useful (needs more investigation)
0.254 2015-02-18 07:06 CET
- MREST.pm: mention 'curl' in SYNOPSIS
- Entity.pm: handle possible \415 from get_acceptable_content_type_handler
- Resource.pm: do not return scalar refs from 'process_post'
0.255 2015-02-18 07:25 CET
- MREST.pm: work on POD; fix syntax error
0.256 2015-02-18 08:44 CET
- implement normalize_filespec (in Util.pm) and use it to convert relative
paths to absolute
- eliminate all references to %ENV (for portability)
0.257 2015-02-18 16:46 CET
- work on POD
0.258 2015-02-21 08:09 CET
- CLI/UserAgent.pm: add 'http_code' property to return status object
0.259 2015-02-21 18:59 CET
- Resource.pm: make 'known_content_type' tolerate undefined/empty content type
0.260 2015-04-06 13:42 CEST
- Resource.pm: mrest_declare_status method could nominally take an
App::CELL::Status object, but this functionality was not tested and, of
course, didn't work properly -> fix
0.261 2015-04-06 14:59 CEST
- Resource.pm: refactor 'mrest_declared_status_code' accessor, add
'mrest_declared_status_explanation' and 'declared_status' accessors
- t/mrest_declared_status.t: add unit tests
0.262 2015-04-13 09:35 CEST
- tweak dependencies in an attempt to fix 'Can't locate object method "create"
via package "Plack::Test"' error in certain smoke tests
0.263 2015-04-13 10:06 CEST
- stop generating massive README, replace it with link to metacpan.org
0.264 2015-07-04 19:03 CEST
- bin/mrest: take local sitedir as a third argument
0.265 2015-07-04 19:59 CEST
- bin/mrest: really load the local site configuration directory
0.266 2015-07-04 20:17 CEST
- MREST.pm: make init() honor all parameters, instead of just one
0.267 2015-07-13 09:42 CEST
- Test.pm: make initialize_unit() more verbose
0.268 2015-07-13 09:45 CEST
- tweak release scripts
0.269 2015-07-16 11:45 CEST
- bin/mrest-cli: fix version number
0.270 2015-07-16 11:48 CEST
- Test.pm: make is_deeply check handle case when the value is undef?
0.271 2015-07-21 19:36 CEST
- Update copyright statement to 2015
- set $VERSION in top-level module only
- new release script
0.272 2015-07-22 14:42 CEST
- Make MREST_CLI_URI_BASE a meta param
- bin/mrest: take $VERSION from top-level module
0.273 2015-07-23 17:45 CEST
- Build.PL: require recent versions of LWP::UserAgent and LWP::Protocol::https
- No longer generate Makefile.PL
- UserAgent.pm: enable SSL connections
0.274 2015-07-25 11:49 CEST
- bin/mrest: use options instead of positional parameters
- release scripting modifications
- Build.PL: make LWP::Protocol::https a BuildRequires as well as a Requires
0.275 2015-07-26 21:21 CEST
- Add missing "use Pod::Usage" to bin/mrest
- Entity.pm: declare error statuses properly in mrest_generate_response_json()
(fixes Github issue #6)
- CLI/UserAgent.pm: in send_req(), be more careful when modifying the response
- Build.PL: add Cwd and File::Basename to BuildRequires
- bin/mrest-standalone: add wrapper for starting server in standalone mode
- update documentation of standalone mode in MREST.pm
0.276 2015-07-27
- Include descriptive text with DISPATCH_VERSION and MREST_CLI_SERVER_ERROR message codes
- Build.PL, MANIFEST.SKIP: release scripting modifications
- Test.pm: change diag() to note() in initialize_unit()
0.277 2015-07-28 17:09 CEST
- finish splitting off Web::MREST::CLI into a separate distro
- bin/mrest: import normalize_filespec() from Web::MREST::CLI::UserAgent
- Util.pm: drop normalize_filespec(); has been moved to Web::MREST::CLI
- lib/Web/MREST/: drop entire CLI/ subtree (just two files, actually)
- config/: drop all CLI-related files and keep server-related ones
- Build.PL: require Web::MREST::CLI >= 0.276
0.278 2015-07-30 14:29 CEST
- Early debugging feature
- MREST.pm: do not call $CELL->load() with debug_mode param
- bin/mrest: import normalize_filespec() from Web::MREST::CLI
0.279 2015-07-30 14:36 CEST
- bin/mrest: fix a silly typo
0.280 2015-08-05 15:35 CEST
- MREST.pm->init(): be more careful about early debugging filespec provided
by user
0.281 2015-07-11 12:07 CET
- config/: rename messages that might clash with application
- global: do not convert warnings into errors
- tests: use Test::Warnings to check for unexpected warnings
- update release and prerelease scripts
0.282 2016-01-02 01:17 CET
- bin/mrest: call app's init() function if it exists
0.283 2016-08-24 10:08 CET
- Display application module in HTML header, not Web::MREST
- add POD caveat: request entity not available until 2nd handler pass
- release.sh: automate attachment of version number to OBS commit
0.284 2016-07-31 20:07 CET
- Dispatch.pm: fix POD on _first_pass_always_exists
- bin/mrest: drop deprecated comments
- bin/mrest: document how to pass arguments to Plack::Runner
0.285 2016-09-05 09:02 CEST
- bin/mrest: comment out a useless message
- Travis CI
- Merge README files into single README.rst
- Add helper files for release automation scripting
0.286 2016-09-24 14:35 CEST
- Drop deprecated local release scripts
- cleanup: drop unused _get_sharedir() argument in bin/mrest
- cleanup: fix copyright header in bin/mrest
- Add get_session() function to Util.pm
0.287 2017-02-25 09:38 CET
- Refrain from munging Plack::Session object
- script: store sessions in a dedicated directory in /tmp
0.288 2017-10-16 22:17 CEST
- build/ops: require latest App::CELL
- Report MREST_DEBUG_MODE setting at startup
0.289 2022-06-29 14:46 CEST
- cleanup: tweak whitespace in copyright notices
- bootstrap: add (hopefully self-explanatory) bootstrap scripts
- doc: Web/MREST.pm: fix error in POD
- lib: update copyright year range in source files
- doc: MREST.pm: point readers to CLI documentation