API-ParallelsWPB

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

Revision history for Perl extension API::ParallelsWPB

0.03    Tue Jul 1 08:40:44 2014 +0000

    - fixed utf8 flag in request
    - JSON replaced with JSON::XS
    - If error is not in JSON, it is returned "as is"


0.01    Tue Nov 26 12:22:16 2013
        - first release;

README  view on Meta::CPAN


SYNOPSIS
        my $client = API::ParallelsWPB->new( username => 'admin', password => 'passw0rd', server => 'builder.server.mysite.ru' );
        my $response = $client->get_sites_info;
        if ( $response->success ) {
            for my $site ( @{ $response->response } ) {
                say "UUID: ". $site->{uuid};
            }
        }
        else {
            warn "Error occured: " . $response->error . ", Status: " . $response->status;
        }

METHODS
  new($class, %param)
    Creates new client instance. Parameters for "new" are:

    username
        Username for connection to Parallels WebPresence Builder instance.
        Required parameter.

README.md  view on Meta::CPAN


```perl
my $client = API::ParallelsWPB->new(username => 'admin', password => 'passw0rd', server => 'builder.server.mysite.ru');
my $response = $client->get_sites_info;
if ($response->success) {
    for my $site (@{$response->response}) {
        say "UUID: ". $site->{ uuid };
    }
}
else {
    warn "Error occured: " . $response->error . ", Status: " . $response->status;
}
```
# METHODS

## new

Creates new client instance. Parameters for ```new``` are:

- username

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

=head1 SYNOPSIS

    my $client = API::ParallelsWPB->new( username => 'admin', password => 'passw0rd', server => 'builder.server.mysite.ru' );
    my $response = $client->get_sites_info;
    if ( $response->success ) {
        for my $site ( @{ $response->response } ) {
            say "UUID: ". $site->{uuid};
        }
    }
    else {
        warn "Error occured: " . $response->error . ", Status: " . $response->status;
    }

=head1 METHODS

=head2 B<new($class, %param)>

Creates new client instance. Parameters for C<new> are:

=over

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

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;

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



sub status {
    my $self = shift;

    return $self->{status};
}



sub error {
    my $self = shift;

    return $self->{error};
}

1;

__END__

=pod

=encoding UTF-8

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

Returns 1 if request succeeded, 0 otherwise.

=head2 B<response($self)>

Returns munged response from service. According to method, it can be scalar, hashref of arrayref.

=head2 B<status($self)>

Returns response status line.

=head2 B<error($self)>

Returns munged error text.

=head1 SEE ALSO

L<Parallels Presence Builder Guide|http://download1.parallels.com/WPB/Doc/11.5/en-US/online/presence-builder-standalone-installation-administration-guide>

L<API::ParallelsWPB>

L<API::ParallelsWPB::Requests>

=head1 AUTHORS

t/02_response.t  view on Meta::CPAN

    ok( $response->success, 'Response status succeeded' );
    is(
        $response->response,
        'b6a09c08f880f229c091de03b91bdbc3',
        'Response content is ok'
    );

    is( $response->status, '200 OK', 'Status line is ok' );
};

subtest 'Response errored' => sub {

    plan tests => 4;

    my $r = HTTP::Response->new;
    $r->code( 404 );
    $r->content(
'{"error":{"message":"Requested resource does not exist by URI: /api/5.3/sites/"}}'
    );

    my $response = API::ParallelsWPB::Response->new( $r );
    ok( !$response->success, 'Response is not succeeded' );
    like(
        $response->error,
        qr/Requested resource does not exist/,
        'Error message is ok'
    );

    ok( !$response->response, 'No content given ok' );
    is( $response->status, '404 Not Found', 'Response status is ok' );
};



( run in 0.329 second using v1.01-cache-2.11-cpan-65fba6d93b7 )