AWS-S3
view release on metacpan or search on metacpan
lib/AWS/S3/ResponseParser.pm view on Meta::CPAN
package AWS::S3::ResponseParser;
use constant DEBUG => $ENV{AWS_S3_DEBUG};
use Moose;
use XML::LibXML;
use XML::LibXML::XPathContext;
use Log::Any qw( $LOG );
has 'expect_nothing' => (
is => 'ro',
isa => 'Bool',
required => 1,
default => 0,
trigger => sub {
my ( $self, $expect_nothing) = @_;
if ( $expect_nothing ) {
my $code = $self->response->code;
if ( $code =~ m{^2\d\d} && !$self->response->content ) {
return; # not sure what jdrago wanted this to do originally
}
else {
if ( $self->_parse_errors() ) {
# die $self->friendly_error();
}
else {
return;
}
}
}
}
);
has 'response' => (
is => 'ro',
isa => 'HTTP::Response',
required => 1,
);
has 'type' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'libxml' => (
is => 'ro',
isa => 'XML::LibXML',
required => 1,
default => sub { return XML::LibXML->new() },
);
has 'error_code' => (
is => 'rw',
isa => 'Str',
required => 0,
);
has 'error_message' => (
is => 'rw',
isa => 'Str',
required => 0,
);
has 'xml' => (
is => 'ro',
isa => 'XML::LibXML::Document',
required => 0,
lazy => 1,
clearer => '_clear_xml',
default => sub {
my $self = shift;
my $src = $self->response->content;
print STDERR ">>> AWS Response:\n", $src, "\n" if DEBUG;
return unless $src =~ m/^[[:space:]]*</s;
return $self->libxml->parse_string( $src );
}
);
( run in 0.511 second using v1.01-cache-2.11-cpan-f56aa216473 )