API-ParallelsWPB

 view release on metacpan or  search on metacpan

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

package API::ParallelsWPB::Response;
use strict;
use warnings;
use JSON::XS qw/decode_json/;

# ABSTRACT: processing of API responses

our $VERSION = '0.03'; # VERSION
our $AUTHORITY = 'cpan:IMAGO'; # AUTHORITY


sub new {
    my ( $class, $res ) = @_;

    my $success    = $res->is_success;
    my $status     = $res->status_line;

    my ( $json_content, $response, $error );

    if ( $success ) {
        $json_content = $res->content;
        $response = decode_json( $json_content )->{response} if $json_content;
    }
    else {
        my $error_json = $res->content;
        eval { $error = decode_json( $error_json )->{error}->{message}; 1; }
        or do { $error = $error_json };
    }

    return bless(
        {
            success  => $success,
            json     => $json_content,
            error    => $error,
            response => $response,
            status   => $status
        },
        $class
    );
}


sub json {
    my $self = shift;

    return $self->{json};
}


sub success {
    my $self = shift;

    return $self->{success};
}


sub response {
    my $self = shift;

    return $self->{response};
}


sub status {
    my $self = shift;

    return $self->{status};
}



sub error {
    my $self = shift;

    return $self->{error};
}

1;

__END__

=pod

=encoding UTF-8

=head1 NAME

API::ParallelsWPB::Response - processing of API responses

=head1 VERSION



( run in 2.828 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )