view release on metacpan or search on metacpan
- Patch from Nikolay Shulyakovskiy
1.07 2008-07-31
- Fixed Build.PL (Test::LongString not in prereqs_build list but required )
- Add URI.pm as required module for test stage
1.06 2008-07-13
- More improvements in tests
- Get user domains list by login or client id
1.05 2008-06-15
- Added full support operations with databases and db users
- Fixed errors in pod documentation
1.04 2008-05-29
- Added the ability to fine tuning the abstract_parser sub (for API::PleskExpand)
url => 'https://127.0.0.1:8443/enterprise/control/agent.php', # required
api_version => '1.6.3.1',
debug => 0,
timeout => 30,
);
my $res = $api->customer->get();
if ($res->is_success) {
for ( @{$res->data} ) {
print "login: $_->{login}\n";
}
}
else {
print $res->error;
}
DESCRIPTION
At present the module provides interaction with Plesk 10.1 (API
1.6.3.1). Distribution was completely rewritten and become more friendly
for developers. Naming of packages and methods become similar to the
lib/API/Plesk.pm view on Meta::CPAN
url => 'https://127.0.0.1:8443/enterprise/control/agent.php', # required
api_version => '1.6.3.1',
debug => 0,
timeout => 30,
);
my $res = $api->customer->get();
if ($res->is_success) {
for ( @{$res->data} ) {
print "login: $_->{login}\n";
}
}
else {
print $res->error;
}
=head1 DESCRIPTION
At present the module provides interaction with Plesk 10.1 (API 1.6.3.1).
Distribution was completely rewritten and become more friendly for developers.
lib/API/Plesk/Component.pm view on Meta::CPAN
}
my $hosting = $params->{hosting};
my $type = delete $hosting->{type};
my $ip = delete $hosting->{ip_address};
#confess "Required ip_address" unless $ip;
if ( $type eq 'vrt_hst' ) {
$self->check_required_params($hosting, qw(ftp_login ftp_password));
my @properties;
for my $key ( sort keys %$hosting ) {
push @properties, { property => [
{name => $key},
{value => $hosting->{$key}}
]};
delete $hosting->{$key};
}
push(@properties, { ip_address => $ip }) if $ip;
lib/API/Plesk/Customer.pm view on Meta::CPAN
use strict;
use warnings;
use Carp;
use base 'API::Plesk::Component';
my @gen_info_fields = qw(
cname
pname
login
passwd
status
phone
fax
email
address
city
state
pcode
country
owner-id
);
sub add {
my ( $self, %params ) = @_;
my $bulk_send = delete $params{bulk_send};
my $gen_info = $params{gen_info} || confess "Required gen_info parameter!";
$self->check_required_params($gen_info, qw(pname login passwd));
my $data = {
gen_info => $self->sort_params($params{gen_info}, @gen_info_fields)
};
return $bulk_send ? $data :
$self->plesk->send('customer', 'add', $data);
}
sub get {
lib/API/Plesk/Customer.pm view on Meta::CPAN
=over 3
=item add(%params)
Method adds customer to Plesk Panel.
%params = (
# required
gen_info => {
pname => 'Mike',
login => 'mike',
passwd => '12345',
...
}
);
=item get(%params)
Method gets customer data.
%params = (
lib/API/Plesk/Database.pm view on Meta::CPAN
};
return $bulk_send ? $data :
$self->plesk->send('database', 'del-db', $data);
}
sub add_db_user {
my ( $self, %params ) = @_;
my $bulk_send = delete $params{bulk_send};
$self->check_required_params(\%params, qw(db-id login password));
my $data = $self->sort_params(\%params, qw(db-id login password));
return $bulk_send ? $data :
$self->plesk->send('database', 'add-db-user', $data);
}
sub del_db_user {
my ($self, %filter) = @_;
my $bulk_send = delete $filter{bulk_send};
my $data = {
lib/API/Plesk/ServicePlan.pm view on Meta::CPAN
use strict;
use warnings;
use Carp;
use Data::Dumper;
use base 'API::Plesk::Component';
my @header_fields = qw(
owner-id
owner-login
);
my @other_fields = qw(
mail
limits
log-rotation
preferences
hosting
performance
permissions
external-id
name
);
my @main_fields = ( @header_fields, @other_fields );
lib/API/Plesk/ServicePlanAddon.pm view on Meta::CPAN
use strict;
use warnings;
use Carp;
use base 'API::Plesk::Component';
my @main_fields = qw/
owner-id
owner-login
/;
sub get {
my ( $self, %params ) = @_;
my $bulk_send = delete $params{bulk_send};
my $filter = delete $params{filter} || '';
my $data = [
{ filter => $filter },
@{ $self->sort_params( \%params, @main_fields ) },
lib/API/Plesk/User.pm view on Meta::CPAN
use strict;
use warnings;
use Carp;
use base 'API::Plesk::Component';
my @gen_info_fields = qw(
cname
login
passwd
owner-guid
owner-external-id
name
contact-info
status
external-id
);
sub add {
my ( $self, %params ) = @_;
my $bulk_send = delete $params{bulk_send};
my $gen_info = $params{gen_info} || confess "Required gen_info parameter!";
my $roles = $params{roles} || confess "Required roles parameter!";
$self->check_required_params($gen_info, qw(name login passwd));
my $unsorteddata = {
'gen-info' => $self->sort_params($params{gen_info}, @gen_info_fields),
roles => $roles,
};
my $data = $self->sort_params($unsorteddata, qw(gen-info roles));
return $bulk_send ? $data :
$self->plesk->send('user', 'add', $data);
}
lib/API/Plesk/User.pm view on Meta::CPAN
=over 3
=item add(%params)
Method adds users to Plesk Panel.
%params = (
# required
gen_info => {
login => 'mike', # required
passwd => '12345', # required
name => 'Mike', # required
owner-guid => # one of this or
owner-external-id => # this required
...
}
# required
roles => {
name => 'WebMaster',
...
lib/API/Plesk/WebUser.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};
$self->check_required_params(\%params, qw(site-id login));
my $data = $self->sort_params(\%params, qw(site-id login password password-type ftp-quota services));
return $bulk_send ? $data :
$self->plesk->send('webuser', 'add', $data);
}
sub get {
my ($self, %filter) = @_;
my $bulk_send = delete $filter{bulk_send};
my $data = {
lib/API/Plesk/Webspace.pm view on Meta::CPAN
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
t/TestData.pm view on Meta::CPAN
# Support sub`s and data for tests
#
our @EXPORT = qw(
delete_all_accounts
create_unique_user_data
_compare
gen_passwd
iterate
check_input_data
create_work_logins
);
# ONLINE configs
my $online_plesk_url = 'https://127.0.0.1:8443/enterprise/control/agent.php';
our $online_manual_created_template_name = $ENV{'template_name'};
our $online_manual_created_template_id = $ENV{'template_id'};
our $online_new_tariff_name = $ENV{'new_tariff'};
t/TestData.pm view on Meta::CPAN
username => $ENV{'plesk_username'} || 'admin',
password => $ENV{'plesk_password'} || 'qwerty',
url => $ENV{'plesk_url'} || $online_plesk_url,
debug => '',
);
# END online configs
our $test_user_data = {
pname => 'pavel',
login => 'pav_perl',
passwd => 'password',
phone => '8 555 1111111',
email => 'nrg@nrg.name',
country => 'RU' # optional field
};
our $stress_test_data = {
pname => [ # 1 .. 60 symbols
'pavel',
'2342134123412',
'dasdf_dasdsa_ADdssd__DASsd',
# '____', error
(join '', 'x' x 60),
'add_(efewf)_(sdfsd)',
],
login => [ # 1 .. 20 symbols,
'pav_perl',
# '___', error
'123546',
#'_sdad',
'nrg.name',
'test.code.google.com',
'yet-another-test',
(join q//, 'x' x 20),
# '_(fsdf)_(fsadf)' error
],
t/TestData.pm view on Meta::CPAN
return $result_hash;
}
sub check_input_data {
my $params = shift;
my $plesk_client = shift;
my $general_info = {
pname => $params->{pname}, # utf8 string
login => $params->{login},
passwd => $params->{passwd},
phone => $params->{phone},
email => $params->{email},
country => $params->{country}, # optional field
};
my $result_add_by_id = $plesk_client->Accounts->create(
general_info => $general_info,
'template-name' => $manual_created_template_name
t/TestData.pm view on Meta::CPAN
is_deeply(
$client->Accounts->delete( all => 1)->is_success,
1,
'Delete all accounts'
);
}
# Sub for create accounts online test
sub create_work_logins {
my $plesk_client = shift;
my $data_accumulator_for_online_tests = shift;
my $result_add_by_id = $plesk_client->Accounts->create(
general_info => create_unique_user_data('crby_login'),
'template-name' => $manual_created_template_name
);
like(
$data_accumulator_for_online_tests->{user_id_from_create_with_tmpl_name} =
$result_add_by_id->get_id,
qr/^\d+$/,
'Create account with template name'
);
t/TestData.pm view on Meta::CPAN
qr/^\d+$/,
'Create account with template id'
);
}
sub create_unique_user_data {
my $unique_id = shift;
my %result_user_data = %{$test_user_data};
$result_user_data{'pname'} = $result_user_data{'login'} = "testuser_$unique_id";
return \%result_user_data;
}
# "Compare" two hashrefs
# Sub for get info online tests
sub _compare {
my $checked = shift;
my $template = shift;
t/compoment.t view on Meta::CPAN
[
{key3 => 3},
{key => 1},
]
);
eval {
$c->check_hosting({
hosting => {
type => 'vrt_hst',
ftp_login => 'ert',
ftp_password => '123',
ip_address => '12.34.56.78',
}
})
};
ok(!$@);
eval {
$c->check_hosting({
hosting => {
type => 'vrt_hst',
ftp_login => 'ert',
ftp_password => '123',
}
})
};
ok(!$@);
eval {
$c->check_hosting({
hosting => {
type => 'vrt_ht',
ftp_login => 'ert',
ftp_password => '123',
}
})
};
like($@, qr/Unknown hosting type!/);
is_deeply(
$c->prepare_filter({id => [qw(1 2 3)], name => 'id'}, sort_keys => [qw(id name)]),
[
{ id => 1 },
t/database.t view on Meta::CPAN
bulk_send => 1
),
{
filter => {name => 'test_db'},
},
'del_db'
);
is_deeply(
$api->database->add_db_user(
'db-id' => 1,
login => 'test_db_user',
password => '12345',
bulk_send => 1
),
[
{'db-id' => 1},
{login => 'test_db_user'},
{password => '12345'},
],
'add_db_user'
);
is_deeply(
$api->database->del_db_user(
'db-id' => 1,
bulk_send => 1
),
{
t/service-plan.t view on Meta::CPAN
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,
),
[
{ filter => { name => '123' } },
{ limits => '' },
{
hosting => {
vrt_hst => [
{ property => [ {name => 'ftp_login'}, {value => '123'} ] },
{ property => [ {name => 'ftp_password'}, {value => '123'} ] },
{ ip_address => '123' },
]
},
},
],
'set'
);
is_deeply(
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'},
]
}}
]
t/webspace.t view on Meta::CPAN
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'} ] },
{ ip_address => '123' },
]
},
},
{ 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'
);