App-Glacier
view release on metacpan or search on metacpan
lib/App/Glacier/Bre.pm view on Meta::CPAN
my ($self) = @_;
my @vaults;
# print "using fixed list_vaults\n";
my $marker;
do {
#10 is the default limit, send a marker if needed
my $res = $self->_send_receive(
GET => "/-/vaults?limit=10" . ($marker ? '&marker='.$marker : '')
);
# updated error severity
croak 'list_vaults failed with error ' . $res->status_line unless $res->is_success;
my $decoded = $self->_decode_and_handle_response( $res );
push @vaults, @{$decoded->{VaultList}};
$marker = $decoded->{Marker};
} while ( $marker );
return ( \@vaults );
}
lib/App/Glacier/Bre.pm view on Meta::CPAN
# [1] https://docs.aws.amazon.com/amazonglacier/latest/dev/api-vault-notifications-get.html
# [2] https://rt.cpan.org/Public/Bug/Display.html?id=128028
sub get_vault_notifications_fixed {
my ($self, $vault_name, $sns_topic, $events) = @_;
croak "no vault name given" unless $vault_name;
my $res = $self->_send_receive(
GET => "/-/vaults/$vault_name/notification-configuration",
);
# updated error severity
croak 'get_vault_notifications failed with error ' . $res->status_line
unless $res->is_success;
return $self->_decode_and_handle_response( $res );
}
our $AUTOLOAD;
sub AUTOLOAD {
lib/App/Glacier/Config.pm view on Meta::CPAN
=item B<cachefile> => I<FILENAME>
Sets the location of the cache file. If passed, the parsed configuration
will be stored in binary form in the I<FILENAME>. Before parsing the
configuration file, the constructor will chech if the cache file exists and
has the same timestamp as the configuration file. If so, the configuration
will be loaded from the cache (using B<Storable>(3)), avoiding parsing
overhead. Otherwise, the cached data will be discarded, and the source file
will be parsed as usual.
The destructor will first check if the configuration was updated, and if
so will recreate the cache file prior to destructing the object instance.
=item B<rw> => B<0> | B<1>
Whether or not the configuration is read-write. This setting is in effect
only if B<cachefile> is also set.
If set to B<0> (the default) any local changes to the configuration (using
B<set> and B<unset> methods), will not be saved to the cache file upon
exiting. Otherwise, the eventual modifications will be stored in the cache.
lib/App/Glacier/Config.pm view on Meta::CPAN
my $self = shift;
my $lev = shift;
return unless $self->{debug} >= $lev;
$self->error("DEBUG: " . join(' ', @_));
}
sub writecache {
my $self = shift;
return unless exists $self->{cachefile};
return unless exists $self->{conf};
return unless $self->{updated};
$self->debug(1, "storing cache file $self->{cachefile}");
store $self->{conf}, $self->{cachefile};
}
sub parse_section {
my ($self, $conf, $input, $locus) = @_;
my $ref = $conf;
my $quote;
my $kw = $self->{parameters} if exists $self->{parameters};
while ($input ne '') {
lib/App/Glacier/Config.pm view on Meta::CPAN
return if exists $self->{conf};
$self->{error_count} = 0;
if (exists($self->{cachefile}) and -f $self->{cachefile}) {
if ($self->file_up_to_date($self->{cachefile})) {
my $ref;
$self->debug(1, "reading from cache file $self->{cachefile}");
eval { $ref = retrieve($self->{cachefile}); };
if (defined($ref)) {
$self->{conf} = $ref;
$self->{updated} = $self->{rw};
return 1;
} elsif ($@) {
$self->error("warning: unable to load configuration cache: $@");
}
}
unlink $self->{cachefile};
}
$self->debug(1, "parsing $self->{filename}");
$self->readconfig($self->{filename}, \%conf);
$self->check_mandatory($self->{parameters}, \%conf);
if ($self->{error_count} == 0) {
$self->{conf} = \%conf ;
$self->{updated} = 1;
$self->fixup($self->{parameters}) if exists $self->{parameters};
return 1;
}
return 0;
}
sub getref {
my $self = shift;
return undef unless exists $self->{conf};
lib/App/Glacier/Config.pm view on Meta::CPAN
my $ref = $self->{conf};
while ($#_ > 1) {
my $arg = shift;
$ref->{$arg} = {} unless exists $ref->{$arg};
$ref = $ref->{$arg};
}
$ref->{$_[0]}{-order} = $self->{order}++
unless exists $ref->{$_[0]}{-order};
$ref->{$_[0]}{-value} = $_[1];
$self->{updated} = $self->{rw};
}
=head2 cfg->unset(@path)
Unsets the configuration variable.
=cut
sub unset {
my $self = shift;
lib/App/Glacier/Config.pm view on Meta::CPAN
return unless exists $ref->{$_};
push @path, [ $ref, $_ ];
$ref = $ref->{$_};
}
while (1) {
my $loc = pop @path;
delete ${$loc->[0]}{$loc->[1]};
last unless (defined($loc) and keys(%{$loc->[0]}) == 0);
}
$self->{updated} = $self->{rw};
}
=head2 @array = $cfg->names_of(@path)
If B<@path> refers to an existing configuration section, returns a list
of names of variables and subsections defined within that section. E.g.,
if you have
[item foo]
x = 1
( run in 0.342 second using v1.01-cache-2.11-cpan-05444aca049 )