view release on metacpan or search on metacpan
2.00 2012-06-25
- Improved is_connection_error function
- Added user component (bgmilne)
- Added mock module for testing without sending requests to real api
- Fixed bug in service_plan->get method
2.00_3 2011-08-01
- Added site-alias component
- Fixed add and set webspace
- Added tests
- Fixed site component
- Added sitebuilder component
- Added ftp-user component
- Fixed hosting ftp_password bug
- Added dns component
- Added mail component
- Fixed is_connection_error function
- Added set and del opetations to service-plan
- Added test of service-plan component
- Reformated Changes
- Fixed Pod
2.00_2 2011-05-16
- Fixed xml renderer
2.00_1 20 Apr 2011 10:52:43
lib/API/Plesk.pm view on Meta::CPAN
my $ua = new LWP::UserAgent( parse_head => 0 );
my $req = new HTTP::Request POST => $self->{url};
if ($self->{secret_key}) {
$req->push_header(':KEY', $self->{secret_key});
} else {
$req->push_header(':HTTP_AUTH_LOGIN', $self->{username});
$req->push_header(':HTTP_AUTH_PASSWD', $self->{password});
}
$req->content_type('text/xml; charset=UTF-8');
$req->content($xml);
# LWP6 hack to prevent verification of hostname
$ua->ssl_opts(verify_hostname => 0) if $ua->can('ssl_opts');
warn $req->as_string if defined $self->{debug} && $self->{debug} > 1;
my $res = eval {
local $SIG{ALRM} = sub { die "connection timeout" };
alarm $self->{timeout};
lib/API/Plesk/Component.pm view on Meta::CPAN
API::Plesk::Component - Base class for components.
=head1 SYNOPSIS
package API::Plesk::Customer;
use base 'API::Plesk::Component';
sub get { ... }
sub set { ... }
1;
=head1 DESCRIPTION
Base class for components.
=head1 METHODS
=over 3
lib/API/Plesk/Customer.pm view on Meta::CPAN
return $bulk_send ? $data :
$self->plesk->send('customer', 'add', $data);
}
sub get {
my ($self, %filter) = @_;
my $bulk_send = delete $filter{bulk_send};
my $data = {
filter => @_ > 2 ? \%filter : '',
dataset => [ {gen_info => ''}, {stat => ''} ]
};
return $bulk_send ? $data :
$self->plesk->send('customer', 'get', $data);
}
sub set {
my ( $self, %params ) = @_;
my $bulk_send = delete $params{bulk_send};
my $filter = $params{filter} || '';
my $gen_info = $params{gen_info} || '';
$gen_info || confess "Required gen_info or stat parameter!";
my $data = {
filter => $filter,
values => {
gen_info => $gen_info,
}
};
return $bulk_send ? $data :
$self->plesk->send('customer', 'set', $data);
}
sub del {
my ($self, %filter) = @_;
my $bulk_send = delete $filter{bulk_send};
my $data = {
filter => @_ > 2 ? \%filter : ''
};
lib/API/Plesk/Customer.pm view on Meta::CPAN
=head1 NAME
API::Plesk::Customer - Managing customer accounts.
=head1 SYNOPSIS
$api = API::Plesk->new(...);
$response = $api->customer->add(..);
$response = $api->customer->get(..);
$response = $api->customer->set(..);
$response = $api->customer->del(..);
=head1 DESCRIPTION
Module manage customer accounts.
=head1 METHODS
=over 3
lib/API/Plesk/Customer.pm view on Meta::CPAN
);
=item get(%params)
Method gets customer data.
%params = (
filter => {...}
);
=item set(%params)
Method sets customer data.
%params = (
filter => {...},
gen_info => {...}
);
=item del(%params)
Method deletes customer from Plesk Panel.
lib/API/Plesk/FTPUser.pm view on Meta::CPAN
my ($self, %filter) = @_;
my $bulk_send = delete $filter{bulk_send};
my $data = {
filter => @_ > 2 ? \%filter : '',
};
return $bulk_send ? $data :
$self->plesk->send('ftp-user', 'get', $data);
}
sub set {
my ( $self, %params ) = @_;
my $bulk_send = delete $params{bulk_send};
my $filter = delete $params{filter} || '';
my @sort_fields = (
'name',
'password',
'home',
'create_non_existent',
'quota',
'permissions',
);
my $data = {
filter => $filter,
values => $self->sort_params(\%params, @sort_fields),
};
return $bulk_send ? $data :
$self->plesk->send('ftp-user', 'set', $data);
}
sub del {
my ($self, %filter) = @_;
my $bulk_send = delete $filter{bulk_send};
my $data = {
filter => @_ > 2 ? \%filter : ''
};
lib/API/Plesk/FTPUser.pm view on Meta::CPAN
Module manage sites (domains).
=head1 METHODS
=over 3
=item add(%params)
=item get(%params)
=item set(%params)
=item del(%params)
=item get_physical_hosting_descriptor(%params)
=back
=head1 AUTHOR
Ivan Sokolov <lt>ivsokolov@cpan.org<gt>
lib/API/Plesk/ServicePlan.pm view on Meta::CPAN
my $filter = delete $params{filter} || '';
my $data = [
{ filter => $filter },
@{ $self->sort_params( \%params, @main_fields ) },
];
return $bulk_send ? $data :
$self->plesk->send('service-plan', 'get', $data);
}
sub set {
my ( $self, %params ) = @_;
my $bulk_send = delete $params{bulk_send};
my $filter = delete $params{filter} || '';
$self->check_hosting(\%params);
my $data = [
{ filter => $filter },
@{$self->sort_params(\%params, @main_fields)},
];
return $bulk_send ? $data :
$self->plesk->send('service-plan', 'set', $data);
}
sub del {
my ($self, %filter) = @_;
my $bulk_send = delete $filter{bulk_send};
my $data = {
filter => @_ > 2 ? \%filter : ''
};
lib/API/Plesk/ServicePlan.pm view on Meta::CPAN
__END__
=head1 NAME
API::Plesk::ServicePlan - Managing service plans.
=head1 SYNOPSIS
$api = API::Plesk->new(...);
$response = $api->service_plan->get(...);
$response = $api->service_plan->set(...);
$response = $api->service_plan->del(...);
=head1 DESCRIPTION
Module manage service plans.
=head1 METHODS
=over 3
=item get(%params)
=item setarams)
=item del(%params)
=back
=head1 AUTHOR
Ivan Sokolov <lt>ivsokolov@cpan.org<gt>
=cut
lib/API/Plesk/Site.pm view on Meta::CPAN
use Carp;
use Data::Dumper;
use base 'API::Plesk::Component';
#TODO
sub add {
my ( $self, %params ) = @_;
my $bulk_send = delete $params{bulk_send};
my $gen_setup = $params{gen_setup} || confess "Required gen_setup parameter!";
my @fields = (
'name',
[qw(webspace-name webspace-id webspace-guid)]
);
$self->check_required_params($gen_setup, @fields);
$self->check_hosting(\%params);
$params{gen_setup} = $self->sort_params($gen_setup, @fields);
my $data = $self->sort_params(\%params, qw(gen_setup hosting prefs));
return $bulk_send ? $data :
$self->plesk->send('site', 'add', $data);
}
sub get {
my ($self, %filter) = @_;
my $bulk_send = delete $filter{bulk_send};
my $dataset = {gen_info => ''};
if ( my $add = delete $filter{dataset} ) {
$dataset = { map { ( $_ => '' ) } ref $add ? @$add : ($add) };
$dataset->{gen_info} = '';
}
my $data = {
filter => @_ > 2 ? \%filter : '',
dataset => $dataset,
};
return $bulk_send ? $data :
$self->plesk->send('site', 'get', $data);
}
sub set {
my ( $self, %params ) = @_;
my $bulk_send = delete $params{bulk_send};
my $filter = delete $params{filter} || '';
$self->check_hosting(\%params);
my $data = {
filter => $filter,
values => $self->sort_params(\%params, qw(gen_setup prefs hosting disk_usage)),
};
return $bulk_send ? $data :
$self->plesk->send('site', 'set', $data);
}
sub del {
my ($self, %filter) = @_;
my $bulk_send = delete $filter{bulk_send};
my $data = {
filter => @_ > 2 ? \%filter : ''
};
lib/API/Plesk/Site.pm view on Meta::CPAN
Module manage sites (domains).
=head1 METHODS
=over 3
=item add(%params)
=item get(%params)
=item set(%params)
=item del(%params)
=item get_physical_hosting_descriptor(%params)
=back
=head1 AUTHOR
Ivan Sokolov <lt>ivsokolov@cpan.org<gt>
lib/API/Plesk/SiteAlias.pm view on Meta::CPAN
my $bulk_send = delete $filter{bulk_send};
my $data = {
filter => @_ > 2 ? \%filter : '',
};
return $bulk_send ? $data :
$self->plesk->send('site-alias', 'get', $data);
}
sub set {
my ( $self, %params ) = @_;
my $bulk_send = delete $params{bulk_send};
return $bulk_send ? \%params :
$self->plesk->send('site-alias', 'set', \%params);
}
sub del {
my ($self, %filter) = @_;
my $bulk_send = delete $filter{bulk_send};
my $data = {
filter => @_ > 2 ? \%filter : ''
};
lib/API/Plesk/SiteAlias.pm view on Meta::CPAN
Module manage sites (domains).
=head1 METHODS
=over 3
=item create(%params)
=item get(%params)
=item set(%params)
=item del(%params)
=back
=head1 AUTHOR
Ivan Sokolov <lt>ivsokolov@cpan.org<gt>
=cut
lib/API/Plesk/User.pm view on Meta::CPAN
return $bulk_send ? $data :
$self->plesk->send('user', 'add', $data);
}
sub get {
my ($self, %filter) = @_;
my $bulk_send = delete $filter{bulk_send};
my $data = {
filter => @_ > 2 ? \%filter : '',
dataset => [ {'gen-info' => ''}, {roles => ''} ]
};
return $bulk_send ? $data :
$self->plesk->send('user', 'get', $data);
}
sub set {
my ( $self, %params ) = @_;
my $bulk_send = delete $params{bulk_send};
my $filter = $params{filter} || '';
my $gen_info = $params{gen_info} || '';
$gen_info || confess "Required gen_info or stat parameter!";
my $data = {
filter => $filter,
values => {
gen_info => $gen_info,
}
};
return $bulk_send ? $data :
$self->plesk->send('user', 'set', $data);
}
sub del {
my ($self, %filter) = @_;
my $bulk_send = delete $filter{bulk_send};
my $data = {
filter => @_ > 2 ? \%filter : ''
};
lib/API/Plesk/User.pm view on Meta::CPAN
=head1 NAME
API::Plesk::Customer - Managing user (e.g. auxiliary) accounts.
=head1 SYNOPSIS
$api = API::Plesk->new(...);
$response = $api->user->add(..);
$response = $api->user->get(..);
$response = $api->user->set(..);
$response = $api->user->del(..);
=head1 DESCRIPTION
Module manage user (e.g. auxiliary) accounts.
Filters used by get,del etc. are as follows:
%filter => {
guid => xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# or
lib/API/Plesk/User.pm view on Meta::CPAN
name => 'WebMaster',
...
);
=item get(%params)
Method gets user data.
%params = ( %filter );
=item set(%params)
Method sets user data.
%params = (
filter => {...},
gen_info => {...}
);
=item del(%params)
Method deletes user from Plesk Panel.
lib/API/Plesk/WebUser.pm view on Meta::CPAN
my $bulk_send = delete $filter{bulk_send};
my $data = {
filter => @_ > 2 ? \%filter : '',
};
return $bulk_send ? $data :
$self->plesk->send('webuser', 'get-prefs', $data);
}
sub set {
my ( $self, %params ) = @_;
my $bulk_send = delete $params{bulk_send};
my $filter = delete $params{filter} || '';
my $data = {
filter => $filter,
values => $self->sort_params(\%params, qw(password password-type ftp-quota services)),
};
return $bulk_send ? $data :
$self->plesk->send('webuser', 'set', $data);
}
sub del {
my ($self, %filter) = @_;
my $bulk_send = delete $filter{bulk_send};
my $data = {
filter => @_ > 2 ? \%filter : ''
};
lib/API/Plesk/WebUser.pm view on Meta::CPAN
=head1 METHODS
=over 3
=item add(%params)
=item get(%params)
=item get_prefs(%params)
=item set(%params)
=item del(%params)
=back
=head1 AUTHOR
Ivan Sokolov <lt>ivsokolov@cpan.org<gt>
=cut
lib/API/Plesk/Webspace.pm view on Meta::CPAN
package API::Plesk::Webspace;
use strict;
use warnings;
use Carp;
use Data::Dumper;
use base 'API::Plesk::Component';
my @gen_setup_fields = qw(
name
owner-id
owner-login
owner-guid
owner-external-id
htype
ip_address
status
external-id
);
my @main_fields = qw(
gen_setup
hosting
limits
prefs
performance
permissions
plan-id
plan-name
plan-guid
plan-external-id
);
sub add {
my ( $self, %params ) = @_;
my $bulk_send = delete $params{bulk_send};
my $gen_setup = $params{gen_setup} || confess "Required gen_setup parameter!";
$self->check_hosting(\%params);
$self->check_required_params(\%params, [qw(plan-id plan-name plan-guid plan-external-id)]);
$self->check_required_params($gen_setup, qw(name ip_address));
$params{gen_setup} = $self->sort_params($gen_setup, @gen_setup_fields);
my $data = $self->sort_params(\%params, @main_fields);
return $bulk_send ? $data :
$self->plesk->send('webspace', 'add', $data);
}
sub get {
my ($self, %filter) = @_;
my $bulk_send = delete $filter{bulk_send};
my $dataset = {gen_info => ''};
if ( my $add = delete $filter{dataset} ) {
$dataset = { map { ( $_ => '' ) } ref $add ? @$add : ($add) };
$dataset->{gen_info} = '';
}
my $data = {
filter => @_ > 2 ? \%filter : '',
dataset => $dataset,
};
return $bulk_send ? $data :
$self->plesk->send('webspace', 'get', $data);
}
sub set {
my ( $self, %params ) = @_;
my $bulk_send = delete $params{bulk_send};
my $filter = delete $params{filter} || '';
my $gen_setup = $params{gen_setup};
$params{gen_setup} = $self->sort_params($gen_setup, @gen_setup_fields) if $gen_setup;
$self->check_hosting(\%params);
my $data = [
{ filter => $filter },
{ values => $self->sort_params(\%params, @main_fields) },
];
return $bulk_send ? $data :
$self->plesk->send('webspace', 'set', $data);
}
sub del {
my ($self, %filter) = @_;
my $bulk_send = delete $filter{bulk_send};
my $data = {
filter => @_ > 2 ? \%filter : ''
};
lib/API/Plesk/Webspace.pm view on Meta::CPAN
Module manage subscriptions (webspaces).
=head1 METHODS
=over 3
=item add(%params)
=item get(%params)
=item set(%params)
=item del(%params)
=item add_plan_item(%params)
=item add_subscription(%params)
=item remove_subscription(%params)
=item switch_subscription(%params)
t/customer.t view on Meta::CPAN
my $api = API::Plesk->new( %TestData::plesk_valid_params );
my $customers = API::Plesk::Customer->new( plesk => $api );
isa_ok($customers, 'API::Plesk::Customer');
is_deeply(
$customers->get(id => 1, bulk_send => 1),
{
filter => {id => 1},
dataset => [ {gen_info => ''}, {stat => ''} ]
},
'get'
);
my $yet_another_api = $api->new( %TestData::plesk_valid_params );
isa_ok( $api, 'API::Plesk', 'INSTANCE call new' );
isnt( $api, $yet_another_api, 'object compare' );
# render_xml
is($api->render_xml({
webspace => {
add => [
{ gen_setup => [
{ qq => sub { 'ddd' } },
{ name => 'sample.com' },
{ ddd => sub { {lll => 1234567} } },
]},
{ hosting => {
name => '123',
value => 'erty'
}}
]
}
}), '<?xml version="1.0" encoding="UTF-8"?><packet version="1.6.3.0"><webspace><add><gen_setup><qq>ddd</qq><name>sample.com</name><ddd><lll>1234567</lll></ddd></gen_setup><hosting><value>erty</value><name>123</name></hosting></add></webspace></packet...
is ( $api->render_xml({ prop => [
{value1 => '0'},
{value2 => ''},
{value3 => undef},
]}), '<?xml version="1.0" encoding="UTF-8"?><packet version="1.6.3.0"><prop><value1>0</value1><value2/><value3/></prop></packet>', 'render_xml');
# compoments
$api = API::Plesk->new(
api_version => '1.6.3.1',
t/service-plan.t view on Meta::CPAN
BEGIN {
plan tests => 5;
use_ok('API::Plesk::ServicePlan');
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
isa_ok($api->service_plan, 'API::Plesk::ServicePlan');
is_deeply(
$api->service_plan->set(
filter => { name => '123' },
hosting => {
type => 'vrt_hst',
ftp_login => '123',
ftp_password => '123',
ip_address => '123',
},
limits => '',
bulk_send => 1,
),
t/service-plan.t view on Meta::CPAN
{
hosting => {
vrt_hst => [
{ property => [ {name => 'ftp_login'}, {value => '123'} ] },
{ property => [ {name => 'ftp_password'}, {value => '123'} ] },
{ ip_address => '123' },
]
},
},
],
'set'
);
is_deeply(
$api->service_plan->del(
name => 'test.ru',
bulk_send => 1
),
{
filter => {name => 'test.ru'},
},
t/site-alias.t view on Meta::CPAN
bulk_send => 1
),
{
'site-id' => 12345,
name => 'www.ru',
},
'create'
);
is_deeply(
$api->site_alias->set(
filter => {'site-id' => 'test.ru'},
settings => { status => 1 },
bulk_send => 1
),
{
filter => {'site-id' => 'test.ru'},
settings => { status => 1 },
},
'set'
);
is_deeply(
$api->site_alias->del(
'site-id' => 123,
bulk_send => 1
),
{
filter => {'site-id' => 123},
},
plan tests => 5;
use_ok('API::Plesk::Site');
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
isa_ok($api->site, 'API::Plesk::Site');
is_deeply(
$api->site->add(
gen_setup => {
name => 'test.ru',
'webspace-name' => 'main.ru',
},
hosting => {
type => 'std_fwd',
ip_address => '12.34.56.78',
dest_url => 'fwd.ru',
},
bulk_send => 1
),
[
{gen_setup => [
{name => 'test.ru'},
{'webspace-name' => 'main.ru'},
]},
{hosting => {
std_fwd => {
dest_url => 'fwd.ru',
ip_address => '12.34.56.78',
}
}}
],
'add'
);
is_deeply(
$api->site->set(
filter => {name => 'test.ru'},
gen_setup => {
name => 'test.ru',
},
hosting => {
type => 'vrt_hst',
ip_address => '12.34.56.78',
ftp_login => 'qwerty',
ftp_password => '12345',
ip_address => '12.34.56.78',
},
bulk_send => 1
),
{
filter => {name => 'test.ru'},
values => [
{gen_setup => {
name => 'test.ru',
}},
{hosting => {
vrt_hst => [
{ property => [
{name => 'ftp_login'},
{value => 'qwerty'}
]},
{ property => [
{name => 'ftp_password'},
{value => '12345'}
]},
{ip_address => '12.34.56.78'},
]
}}
]
},
'set'
);
is_deeply(
$api->site->del(
name => 'test.ru',
bulk_send => 1
),
{
filter => {name => 'test.ru'},
},
my $api = API::Plesk->new( %TestData::plesk_valid_params );
my $users = $api->user;
isa_ok($users, 'API::Plesk::User');
is_deeply(
$users->get(guid => 1, bulk_send => 1),
{
filter => {guid => 1},
dataset => [ {'gen-info' => ''}, {roles => ''} ]
},
'get'
);
t/webspace.t view on Meta::CPAN
use_ok('API::Plesk::Webspace');
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
isa_ok($api->webspace, 'API::Plesk::Webspace');
is_deeply(
$api->webspace->add(
'plan-name' => '123',
gen_setup => {
name => '123',
ip_address => '123',
'owner-login' => '123',
},
hosting => {
type => 'vrt_hst',
ftp_login => '123',
ftp_password => '123',
ip_address => '123',
},
prefs => { www => 'true' },
bulk_send => 1,
),
[
{
gen_setup => [
{name => '123'},
{'owner-login' => '123'},
{ip_address => '123'},
],
},
{
hosting => {
vrt_hst => [
{ property => [ {name => 'ftp_login'}, {value => '123'} ] },
{ property => [ {name => 'ftp_password'}, {value => '123'} ] },
t/webspace.t view on Meta::CPAN
]
},
},
{ prefs => { www => 'true' } },
{ 'plan-name' => '123' },
],
'add'
);
is_deeply(
$api->webspace->set(
filter => { name => '123' },
gen_setup => {
name => '123',
ip_address => '123',
'owner-login' => '123',
},
hosting => {
type => 'vrt_hst',
ftp_login => '123',
ftp_password => '123',
ip_address => '123',
},
prefs => { www => 'true' },
bulk_send => 1,
),
[
{ filter => { name => '123' } },
{ values => [
{
gen_setup => [
{name => '123'},
{'owner-login' => '123'},
{ip_address => '123'},
],
},
{
hosting => {
vrt_hst => [
{ property => [ {name => 'ftp_login'}, {value => '123'} ] },
{ property => [ {name => 'ftp_password'}, {value => '123'} ] },
{ ip_address => '123' },
]
},
},
{ prefs => { www => 'true' } },
]},
],
'set'
);
is_deeply(
$api->webspace->add_subscription(
'plan-guid' => 'wervqwef',
bulk_send => 1
),
[
{'plan-guid' => 'wervqwef'},