Amazon-SQS-Client
view release on metacpan or search on metacpan
lib/Amazon/SQS/Config.pm view on Meta::CPAN
package Amazon::SQS::Config;
use strict;
use warnings;
use Config::IniFiles;
use Scalar::Util qw(openhandle);
use Data::Dumper;
our $VERSION = '2.0.6';
use Readonly;
Readonly::Array our @REQUIRED_ACCESSORS => qw(
aws_access_key_id
aws_secret_access_key
error_delete
error_exit
handler_class
handler_pidfile
log_file
log_level
queue_create_queue
queue_name
queue_url
queue_interval
queue_max_messages
queue_max_wait
queue_visibility_timeout
queue_wait_time
);
__PACKAGE__->follow_best_practice;
__PACKAGE__->mk_accessors(qw(config file queue_list service));
use parent qw(Class::Accessor::Fast);
########################################################################
sub new {
########################################################################
my ( $class, @args ) = @_;
my $options = ref $args[0] ? $args[0] : {@args};
my $self = $class->SUPER::new($options);
my $file = $self->get_file;
die "file is a required argument\n"
if !$file;
die sprintf "no such file: [%s]\n", $file
if !openhandle($file) && !-e $file;
my $config = Config::IniFiles->new(
-file => $self->get_file,
-fallback => 'main'
);
$self->set_config($config);
$self->create_config_accessors();
my @required_accessors = grep { !$self->can($_) } @REQUIRED_ACCESSORS;
$self->mk_accessors(@required_accessors);
return $self;
}
########################################################################
sub create_config_accessors {
########################################################################
my ($self) = @_;
my $config = $self->get_config;
my @sections = $config->Sections;
foreach my $section (@sections) {
my %section_config;
foreach ( $config->Parameters($section) ) {
$section_config{$_} = $self->get_config->val( $section, $_ );
}
my @extra_vars = keys %section_config;
if (@extra_vars) {
no strict 'refs'; ## no critic (ProhibitNoStrict)
my @ok_vars;
( run in 2.935 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )