NAME

App::MFILE::WWW::Dispatch - app dispatch stub

SYNOPSIS

TBD

DESCRIPTION

This is where we override the default version of the is_authorized method defined by Web::Machine::Resource.

This module is only used in standalone mode. In derived distribution mode, the application's dispatch module will be used, instead.

METHODS

is_authorized

Since all requests go through this function at a fairly early stage, we leverage it to validate the session.

ua

Returns the LWP::UserAgent object obtained from the lookup table. Creates it first if necessary.

process_post

POST requests are assumed to be AJAX calls. Their entity bodies must be valid JSON with the following simple structure:

{ method: HTTP_METHOD, path: RESOURCE, body: BODY_JSON }

where HTTP_METHOD is any HTTP method accepted by the REST server, RESOURCE is a valid path to a REST server resource, and BODY_JSON is the content body to be sent in the HTTP request to the REST server. Provided the request is properly authorized and the body is well-formed, the request is forwarded to the REST server via the App::MFILE package's rest_req routine and the REST server's response is sent back to the user's browser, where it is processed by the JavaScript code.

In derived-distro mode, this structure is expected to be translated into a "real" HTTP request, to be forwarded via the LWP::UserAgent object stored in the session data. The status object received in the response is then passed back to the JavaScript side.

There is one special case: the POST request from the login dialog looks like this:

{ method: "LOGIN", path: "login", body: { nam: 'nick', pwd: 'kcin" } }

Login requests receive special handling.

_is_fresh