The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
package WebService::Amazon::Glacier::GetVaultNotifications;
{
  $WebService::Amazon::Glacier::GetVaultNotifications::VERSION = '0.001';
}
use MooseX::App::Command;
use 5.010;
use POSIX qw(strftime);
use HTTP::Request;
use JSON;
use TryCatch;
use WebService::Amazon::Glacier::GlacierError;
extends qw(WebService::Amazon::Glacier);


option 'vaultname' => (
    is            => 'rw',
    isa           => 'Str',
    reader        => 'get_vaultname',
    predicate     => 'has_vaultname',
    required      => 1,
    documentation => q[Name of vault to query for notifications],
    );

sub run {
    my ($self)=@_;
    try{
	say($self->_get_vault_notifications());
    }catch (WebService::Amazon::Glacier::GlacierError $e){
	say("CODE:".$e->error_code());
	die $e->error_message."\n";
    }
    return 0;
}


sub _get_vault_notifications{
    my $self=shift;
    my $hr=HTTP::Request->new('GET',"http://glacier.".$self->get_region().".amazonaws.com/".$self->get_AccountID()."/vaults/".$self->get_vaultname."/notification-configuration", [ 
				  'Host', "glacier.".$self->get_region().".amazonaws.com", 
				  'Date', strftime("%Y%m%dT%H%M%SZ",gmtime(time())) , 
				  'X-Amz-Date', strftime("%Y%m%dT%H%M%SZ",gmtime(time())) , 
				  'x-amz-glacier-version', '2012-06-01',
			      ]);
    try{
	my $response=$self->_submit_request($hr);
	if ($response->is_success) {
	    return($response->decoded_content());
	}else{
	    die WebService::Amazon::Glacier::GlacierError->new( error_code => $response->code(),
								error_message => $response->as_string(),
		);
	}
    }catch(WebService::Amazon::Glacier::GlacierError $e){
	if ($e->error_code eq "404"){
	    return "Notifications Disabled for ".$self->get_vaultname();
	}else{
	    die $e;
	}
    }
}
1;

__END__

=pod

=head1 NAME

WebService::Amazon::Glacier::GetVaultNotifications

=head1 VERSION

version 0.001

=head1 METHODS

=head2 _get_vault_notifications

Returns a string describing the current vault notifications

=for Pod::Coverage run

=head1 AUTHOR

Charles A. Wimmer <charles@wimmer.net>

=head1 COPYRIGHT AND LICENSE

This software is Copyright (c) 2012 by Charles A. Wimmer.

This is free software, licensed under:

  The (three-clause) BSD License

=cut