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 )