diff options
Diffstat (limited to 'Xerl/Setup/Request.pm')
| -rw-r--r-- | Xerl/Setup/Request.pm | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Xerl/Setup/Request.pm b/Xerl/Setup/Request.pm new file mode 100644 index 0000000..31c18a3 --- /dev/null +++ b/Xerl/Setup/Request.pm @@ -0,0 +1,50 @@ +# Xerl (c) 2005-2011, 2013 Dipl.-Inform. (FH) Paul C. Buetow +# +# E-Mail: xerl@dev.buetow.org WWW: http://xerl.buetow.org +# +# This is free software, you may use it and distribute it under the same +# terms as Perl itself. + +package Xerl::Setup::Request; + +use strict; +use warnings; + +use v5.14.0; + +use Xerl::Base; + +sub parse($) { + my Xerl::Setup::Request $self = $_[0]; + my $request = $self->get_request(); + + # Secure it! + $request =~ s#/\.\.##g; + + # Remove last / + $request =~ s#/$##; + + my $request_subdir = $request; + $request_subdir =~ s#/\?.*##; + $self->set_request_subdir($request_subdir); + + # List context returns $1 + ($_) = $request =~ /\?(.+)/; + + return $self unless defined; + + my $params = ''; + + # List context uses ($1,$2) as method args + for ( split /&/ ) { + $self->setval(/(.+?)=(.+)/); + $params .= "&$1=$2" if $1 ne 'site'; + } + + $self->set_params($params); + + return undef; +} + +1; + |
