API-ParallelsWPB

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

NAME
    API::ParallelsWPB - client for Parallels Presence Builder API

VERSION
    version 0.03

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.

    password
        Password for connection to Parallels WebPresence Builder instance.
        Required parameter.

    server
        Servername or server ip address for connection to Parallels
        WebPresence Builder instance. Optional parameter.

    api_version
        API version, used in API url constructing. Optional parameter.

README.md  view on Meta::CPAN

# NAME

API::ParallelsWPB - client for Parallels Presence Builder API

# SYNOPSIS

```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

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

- password

Password for connection to Parallels WebPresence Builder instance. Required parameter.

- server

Servername or server ip address for connection to Parallels WebPresence Builder instance. Optional parameter.

- api_version

API version, used in API url constructing. Optional parameter.

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



# Constuctor
sub new {
    my $class = shift;

    $class = ref $class || $class;

    my $self = {
        username    => '',
        password    => '',
        server      => '',
        api_version => '5.3',
        debug       => 0,
        timeout     => 30,
        (@_)
    };

    map { confess "Field '" . $_ . "' required!" unless $self->{ $_ } } qw/username password server/;

    return bless $self, $class;
}

# "free" request. Basic method for requests



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

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

    my ( $self, $data, $url, $post_data ) = @_;

    my $ua = LWP::UserAgent->new();
    my $req = HTTP::Request->new( $data->{req_type} => $url );

    if ( $data->{req_type} eq 'POST' || $data->{req_type} eq 'PUT' ) {
        $req->header( 'content-type' => 'application/json' );
        $req->content( $post_data );
    }

    $req->authorization_basic( $self->{username}, $self->{password} );
    $ua->ssl_opts( verify_hostname => 0 );
    $ua->timeout( $self->{timeout} );

    warn $req->as_string if ( $self->{debug} );

    my $res = $ua->request( $req );
    warn $res->as_string if ( $self->{debug} );

    my $response = API::ParallelsWPB::Response->new( $res );
    return $response;

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

=head1 NAME

API::ParallelsWPB - client for Parallels Presence Builder API

=head1 VERSION

version 0.03

=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;
    }

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

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

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

=over

=item username

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

=item password

Password for connection to Parallels WebPresence Builder instance. Required parameter.

=item server

Servername or server ip address for connection to Parallels WebPresence Builder instance. Optional parameter.

=item api_version

API version, used in API url constructing. Optional parameter.

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

state

    trial | suspended | regular

    This parameter is optional.
    It specifies whether the site is in the trial mode, suspended or active (regular value). Sites in the trial mode can be edited, but cannot be published to a hosting account.

publicationSettings

    {
        "targetUrl" => "ftp://username:password@ftp.example.com/path",
        "webSiteUrl" => "http://example.com",
        "fallbackIp" => "192.168.1.3"
    }

    This parameter is optional.

ownerInfo

    {
        "personalName" => "John Doe",

t/03_f_request.t  view on Meta::CPAN

            self      => $self,
            data      => $data,
            url       => $url,
            post_data => $post_data
        );
    };
}

my $client = API::ParallelsWPB->new(
    username => 'test',
    password => 'passw0rd',
    server   => '127.0.0.1'
);

subtest 'Test GET request' => sub {

    plan tests => 2;

    $client->f_request( [qw/ system version /], { req_type => 'get' } );

    is( $transfered_params{url}, 'https://127.0.0.1/api/5.3/system/version/',

t/04_requests.t  view on Meta::CPAN


use Test::More;
use Data::Dumper;
use API::ParallelsWPB;
use API::ParallelsWPB::Response;

use t::lib::Mock;

my $client = t::lib::Mock->new(
    username => 'test',
    password => 'passw0rd',
    server   => '127.0.0.1'
);

subtest 'get_version' => sub {
    plan tests => 2;

    $client->get_version;
    my $p = $client->get_request_params;

    like( $p->{url}, qr{/api/5.3/system/version/},

t/04_requests.t  view on Meta::CPAN


    is( $p->{data}->{req_type}, 'GET', 'Reqtype for get_version is ok' );
};

subtest 'create_site' => sub {
    plan tests => 3;

    # after site creation uuid goes to $client, and methods with uuid required can be called without uuid in params
    my $client = t::lib::Mock->new(
        username => 'test',
        password => 'passw0rd',
        server   => '127.0.0.1'
    );

    $client->create_site( state => 'regular' );
    my $p = $client->get_request_params;

    like( $p->{url}, qr{/api/5.3/sites/}, 'URL for create_site is ok' );
    like( $p->{post_data}, qr{"state":"regular"},
        'post_data for create_site is ok' );
    is( $p->{data}->{req_type}, 'POST', 'Reqtype for create_site is ok' );



( run in 0.687 second using v1.01-cache-2.11-cpan-49f99fa48dc )