Amon2
view release on metacpan or search on metacpan
lib/Amon2/Web/Request.pm view on Meta::CPAN
use strict;
use warnings;
use parent qw/Plack::Request/;
use Encode ();
use Carp ();
use URI::QueryParam;
use Hash::MultiValue;
sub new {
my ($class, $env, $context_class) = @_;
my $self = $class->SUPER::new($env);
if (@_==3) {
$self->{_web_pkg} = $context_class;
}
return $self;
}
sub _encoding {
my $self = shift;
return $self->{_web_pkg} ? $self->{_web_pkg}->context->encoding : Amon2->context->encoding;
}
# -------------------------------------------------------------------------
# This object returns decoded parameter values by default
sub body_parameters {
my ($self) = @_;
$self->{'amon2.body_parameters'} ||= $self->_decode_parameters($self->SUPER::body_parameters());
}
sub query_parameters {
my ($self) = @_;
$self->{'amon2.query_parameters'} ||= $self->_decode_parameters($self->SUPER::query_parameters());
}
sub _decode_parameters {
my ($self, $stuff) = @_;
my $encoding = $self->_encoding();
my @flatten = $stuff->flatten();
my @decoded;
while ( my ($k, $v) = splice @flatten, 0, 2 ) {
push @decoded, Encode::decode($encoding, $k), Encode::decode($encoding, $v);
lib/Amon2/Web/Request.pm view on Meta::CPAN
my $query = $self->query_parameters;
my $body = $self->body_parameters;
Hash::MultiValue->new( $query->flatten, $body->flatten );
};
}
# -------------------------------------------------------------------------
# raw parameter values are also available.
sub body_parameters_raw {
shift->SUPER::body_parameters();
}
sub query_parameters_raw {
shift->SUPER::query_parameters();
}
sub parameters_raw {
my $self = shift;
$self->env->{'plack.request.merged'} ||= do {
my $query = $self->SUPER::query_parameters();
my $body = $self->SUPER::body_parameters();
Hash::MultiValue->new( $query->flatten, $body->flatten );
};
}
sub param_raw {
my $self = shift;
return keys %{ $self->parameters_raw } if @_ == 0;
my $key = shift;
return $self->parameters_raw->{$key} unless wantarray;
share/flavor/Minimum/builder/MyBuilder.pm view on Meta::CPAN
for my $dir (qw(tmpl static)) {
next unless -d $dir;
for my $src (@{$self->rscan_dir($dir)}) {
next if -d $src;
$self->copy_if_modified(
from => $src,
to_dir => File::Spec->catfile( $share_prefix )
);
}
}
$self->SUPER::ACTION_code();
}
1;
( run in 1.079 second using v1.01-cache-2.11-cpan-49f99fa48dc )