Mail-MtPolicyd

 view release on metacpan or  search on metacpan

lib/Mail/MtPolicyd/Request.pm  view on Meta::CPAN

package Mail::MtPolicyd::Request;

use Moose;
use namespace::autoclean;

use Mail::MtPolicyd::Plugin::Result;

our $VERSION = '2.05'; # VERSION
# ABSTRACT: the request object


has 'attributes' => (
	is => 'ro', isa => 'HashRef', required => 1,
	traits => [ 'Hash' ],
	handles => { 'attr' => 'get' },
);


# gets attached later
has 'session' => ( is => 'rw', isa => 'Maybe[HashRef]' );


has 'server' => (
	is => 'ro', isa => 'Net::Server', required => 1,
	handles => {
		'log' => 'log',
	}
);


has 'type' => (
	is => 'ro',
	isa => 'Str',
	lazy => 1,
	default => sub {
		my $self = shift;
		return( $self->attr('request') );
	}
);


has 'use_caching' => ( is => 'rw', isa => 'Bool', default => 1 );


sub dump_attr {
	my $self = shift;
	my $attr = $self->attributes;
	return( join(', ', map { $_.'='.$attr->{$_} } keys %$attr ) );
}


sub get {
  my ( $self, $value ) = @_;
  my ($scope, $name);

  if( ! defined $value || $value eq '' ) { return; }

  my @params = split(':', $value, 2);
  if( scalar(@params) == 2 ) {
    ( $scope, $name ) = @params;
  } elsif( scalar(@params) == 1) {
    ( $scope, $name ) = ( 'request', @params );
  }

  if( $scope eq 'session' || $scope eq 's' ) {
    if( ! defined $self->session ) {
      return;
    }
    return $self->session->{$name};
  } elsif( $scope eq 'request' || $scope eq 'r' ) {
    return $self->attr( $name );
  }



( run in 0.485 second using v1.01-cache-2.11-cpan-5a3173703d6 )