Web-ComposableRequest
view release on metacpan or search on metacpan
lib/Web/ComposableRequest/Role/Cookie.pm view on Meta::CPAN
package Web::ComposableRequest::Role::Cookie;
use namespace::autoclean;
use CGI::Simple::Cookie;
use Unexpected::Types qw( HashRef );
use Web::ComposableRequest::Util qw( add_config_role );
use Moo::Role;
requires qw( _config _env );
add_config_role __PACKAGE__.'::Config';
my $_decode = sub {
my ($cookies, $prefix, $name) = @_; my $cname = "${prefix}_${name}";
my $attr = {}; ($name and exists $cookies->{ $cname }) or return $attr;
for (split m{ \+ }mx, $cookies->{ $cname }->value) {
my ($k, $v) = split m{ ~ }mx, $_; $k and $attr->{ $k } = $v;
}
return $attr;
};
has 'cookies' => is => 'lazy', isa => HashRef, builder => sub {
my %v = CGI::Simple::Cookie->parse( $_[ 0 ]->_env->{ 'HTTP_COOKIE' } ); \%v;
};
sub get_cookie_hash {
return $_decode->( $_[ 0 ]->cookies, $_[ 0 ]->_config->prefix, $_[ 1 ] );
};
package Web::ComposableRequest::Role::Cookie::Config;
use namespace::autoclean;
use Unexpected::Types qw( NonEmptySimpleStr );
use Web::ComposableRequest::Constants qw( TRUE );
use Moo::Role;
has 'prefix' => is => 'ro', isa => NonEmptySimpleStr, required => TRUE;
1;
__END__
=pod
=encoding utf-8
=head1 Name
Web::ComposableRequest::Role::Cookie - Adds cookies to the request class
=head1 Synopsis
package Your::Request::Class;
use Moo;
extends 'Web::ComposableRequest::Base';
with 'Web::ComposableRequest::Role::Cookie';
=head1 Description
Adds cookies to the request class
=head1 Configuration and Environment
Defines the following attributes;
=over 3
=item C<cookies>
A hash reference of cookies supplied with the request
=back
( run in 0.672 second using v1.01-cache-2.11-cpan-71847e10f99 )