use NEXT;
use File::MMagic::XS qw(:compat);
-our $VERSION = '2.12';
+our $VERSION = '2.12_pre1';
our $mmagic = File::MMagic::XS->new();
# proposed privacy conventions:
die "status undefined after start_request_hook()" unless defined
$self->status;
- $self->session($self->get_session);
- $self->user($self->get_user);
+ my $session = $self->get_session;
+ $self->session($self->{session} || $session);
+ my $user = $self->get_user;
+ $self->user($self->{user} || $user);
my $status = $self->handler_guts;
return $status unless $status == OK;
=cut
-sub parse_path
-{
+sub parse_path {
my ($self) = @_;
# Previous versions unconditionally set table, action and args to whatever
=item preprocess_path
Sometimes when you don't want to rewrite or over-ride parse_path but
-want to rewrite urls or extract data from them before it is parsed.
+want to rewrite urls or extract data from them before it is parsed,
+the preprocess_path/location methods allow you to munge paths and urls
+before maypole maps them to actions, classes, etc.
This method is called after parse_location has populated the request
information and before parse_path has populated the model and action
information, and is passed the request object.
You can set action, args or table in this method and parse_path will
-then leave those values in place or populate them if not present
+then leave those values in place or populate them based on the current
+value of the path attribute if they are not present.
=cut
sub preprocess_path { };
+=item preprocess_location
+
+This method is called at the start of parse_location, after the headers in, and allows you
+to rewrite the url used by maypole, or dynamically set configuration
+like the base_uri based on the hostname or path.
+
+=cut
+
+sub preprocess_location { };
+
=item make_path( %args or \%args or @args )
This is the counterpart to C<parse_path>. It generates a path to use
=cut
+
sub make_path
{
my $r = shift;