Device-PaloAlto-Firewall
view release on metacpan or search on metacpan
lib/Device/PaloAlto/Firewall.pm view on Meta::CPAN
sub _send_http_request {
my $self = shift;
my $http_request = shift;
return $self->user_agent->request( $http_request );
}
sub _check_http_response {
my $self = shift;
my $http_response = shift;
# Check the HTTP response codes
if ($http_response->is_error) {
carp "HTTP Error (".$http_response->code.")";
$self->_raw_http_error( $http_response );
return;
}
return 1;
}
sub _write_tracefile {
my $self = shift;
my ($http_req, $http_resp) = @_;
# We increment the trace ID for each call
$self->_trace_id( $self->_trace_id() + 1 );
if ($self->trace) {
my $fh = $self->_trace_fh();
print $fh '=' x 10 . " ID" . $self->_trace_id . " Request " . '=' x 10 . "\n";
print $fh $http_req->as_string();
print $fh '=' x 10 . " ID" . $self->_trace_id . " Response " . '=' x 10 . "\n";
print $fh $http_resp->as_string();
if ($self->trace == 2) {
print $fh '=' x 10 . " ID" . $self->_trace_id . " Stack Trace " . '=' x 10 . "\n";
my $stack = Devel::StackTrace->new();
print $fh $stack->as_string();
}
print $fh "\n\n";
}
}
sub _get_pa_response {
my $self = shift;
my $http_response = shift;
my $xml_parser = XML::Twig->new();
my $pa_response_twig = $xml_parser->safe_parse( $http_response->decoded_content );
if (!$pa_response_twig) {
carp "Invalid XML returned from firewall";
return;
}
my $pa_response = $pa_response_twig->simplify( forcearray => ['entry'] );
return $pa_response;
}
sub _check_pa_response {
my $self = shift;
my $pa_response = shift;
return if !defined $pa_response;
if ($pa_response->{status} eq 'error') {
# If there's no code, we create our own 'psuedo error code'
$pa_response->{code} //= '255';
carp "API Error: ".$self->_api_error_to_string($pa_response->{code});
$self->_raw_pa_error( $pa_response );
return;
}
return $pa_response;
}
sub _is_null_response {
my $response = shift;
if (!$response
|| (ref $response eq 'ARRAY' and !@{ $response })
|| (ref $response eq 'HASH' and !%{ $response })) {
return 1;
}
return 0;
}
sub _api_error_to_string {
my $self = shift;
my $code = shift;
return {
400 => 'Bad request (400)',
403 => 'Forbidden (403)',
1 => 'Unknown command (1)',
2 => 'Internal error (2)',
3 => 'Internal error (3)',
4 => 'Internal error (4)',
5 => 'Internal error (5)',
6 => 'Bad Xpath (6)',
( run in 2.545 seconds using v1.01-cache-2.11-cpan-600a1bdf6e4 )