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 )