API-Plesk

 view release on metacpan or  search on metacpan

lib/API/Plesk/Response.pm  view on Meta::CPAN


package API::Plesk::Response;

use strict;
use warnings;

use Data::Dumper;

sub new {
    my ( $class, %attrs) = @_;
    $class = ref $class || $class;

    my $operator  = $attrs{operator};
    my $operation = $attrs{operation};
    my $response  = $attrs{response};
    my $results = [];
    my $is_success = 1;

    # internal API::Plesk error
    if ( $attrs{error} ) {
        $results = [{
            errcode => '',
            errtext => $attrs{error},
            status  => 'error'
        }];
        $is_success = '';
    }
    # remote system plesk error
    elsif ( exists $response->{packet}->{'system'} ) {
        $results = [$response->{packet}->{'system'}];
        $is_success = '';
        $operator   = 'system';
        $operation  = '';
    }
    else {
        eval {
            for my $result ( @{$response->{packet}->{$operator}->{$operation}->[0]->{result}} ) {
                push @$results, $result;
                $is_success = '' if $result->{status} && $result->{status} eq 'error';
            }
            1;
        } || do {
            $results = [{
                errcode => '',
                errtext => "Internal Plesk error: $_.\nError: $@\nDetails:" . Dumper( $response ),
                status  => 'error'
            }];
        };
    }

    my $self = {
        results     => $results,
        operator   => $operator,
        operation  => $operation,
        is_success => $is_success,
    };

    return bless $self, $class;
}

sub is_success { $_[0]->{is_success} }

sub id   { $_[0]->{results}->[0]->{id} }
sub guid { $_[0]->{results}->[0]->{guid} }

sub data {
    my ( $self ) = @_;



( run in 1.386 second using v1.01-cache-2.11-cpan-39bf76dae61 )