sub new {
my ($class, %args) = @_;
return 'Error in syntax usage' unless _arg_validation(\%args);
my $self = {
ua => _mk_ua(),
login => $args{login},
password => $args{password},
dir => $args{dir},
threads => 30,
};
bless $self, $class;
die 'ERROR WITH CONNECTION AUTH' unless $self->_connection_try();
return $self;
}
####
my $a;
eval
{
my $vk = mp3vk_api->new
(
login => 'mail@mail.com',
password => 'passwd',
dir => 'Rhapsody',
threads => '10',
);
if (ref($vk) eq 'mp3vk_api')
{
my $out = $vk->search('Rhapsody');
if (ref $out)
{
my $a = $vk->vk_download($out);
}
else
{
# handle possible search failure
# throw an exception
}
}
else
{
# handle constructor failure
# throw an exception
}
};
if ($@)
{
# catch all exceptions and handle those which haven't been handled already
}
else
{
# use $a normally
}
####
sub _arg_validation {
my $args = shift;
my $dir = "$ENV{HOME}/vk_music/";
$dir .= "$args->{dir}/" if defined $args->{dir};
mkdir $dir;
$args->{dir} = $dir;
return 1 if defined $args->{login} &&
defined $args->{password} &&
$args->{login} =~ /^.*?\@.*?$/ &&
$args->{password} =~ /\w{2,}/;
return 0;
}