WebService-Gyazo
view release on metacpan or search on metacpan
lib/WebService/Gyazo.pm view on Meta::CPAN
package WebService::Gyazo;
use strict;
use warnings;
use WebService::Gyazo::Image;
use LWP::UserAgent;
use LWP::Protocol::socks;
use HTTP::Request::Common;
use URI::Simple;
our $VERSION = 0.03;
use constant {
HTTP_PROXY => 'http',
SOCKS4_PROXY => 'socks4',
SOCKS5_PROXY => 'socks',
HTTPS_PROXY => 'https',
};
sub new {
my ($self, %args) = @_;
$self = bless(\%args, $self);
return $self;
}
# ÐолÑÑиÑÑ ÑекÑÑ Ð¾Ñибки
sub error {
my ($self) = @_;
return ($self->{error}?$self->{error}:'N/A');
}
sub isError {
my ($self) = @_;
return ($self->{error}?1:0);
}
# УÑÑановиÑÑ Ð¿ÑокÑи
sub setProxy {
my ($self, $proxyStr) = @_;
# ÐÑли бÑл пеÑедан
if ($proxyStr) {
# ÐÑбиÑаем из него ip и port
#my ($protocol, $ip, $port) = $proxyStr =~ m#(\w+)://(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})#;
my $proxyUrl = URI::Simple->new($proxyStr);
my ($protocol, $ip, $port) = ( $proxyUrl->protocol, $proxyUrl->host, ($proxyUrl->port || '80') );
#print "\n\$protocol=$protocol\n\$ip=$ip\n\$port=$port\n";
if ( defined($protocol) and defined($ip) and defined($port) ) {
unless ( $protocol eq HTTP_PROXY or $protocol eq HTTPS_PROXY or $protocol eq SOCKS4_PROXY or $protocol eq SOCKS5_PROXY ) {
$self->{error} = "Wrong protocol type [".$protocol."]";
return 0;
}
# ÐÑовеÑÑем пÑавилÑноÑÑÑ Ð²Ð²ÐµÐ´ÑннÑÑ
знаÑений
if ( $port <= 65535 ) {
$self->{proxy} = $protocol.'://'.$ip.':'.$port;
return 1;
} else {
$self->{error} = 'Error proxy format!';
return 0;
}
# ÐнаÑе возÑаÑÑем оÑÑиÑание
} else {
$self->{proxy} = 'Wrong proxy protocol, ip or port!';
return 0;
}
} else {
# ÐнаÑе возвÑаÑÑем оÑÑиÑание
$self->{error} = 'Undefined proxy value!';
return 0;
}
}
# ÐазннаÑÑем ID
sub setId {
my ($self, $id) = @_;
# ÐÑовеÑÑем Ð´Ð»Ð¸Ð½Ð½Ñ ID
if ( defined($id) and $id =~ m#^\w+$# and length($id) <= 14 ) {
$self->{id} = $id;
return 1;
} else {
# ÐнаÑе возÑаÑÑем оÑÑиÑание
$self->{error} = 'Wrong id syntax!';
return 0;
}
}
# ÐагÑÑжаем Ñайл
sub uploadFile {
my ($self, $file) = @_;
# ÐазнаÑаем ID еÑли он не бÑл назнаÑен
unless ($self->{id}) {
$self->{id} = time();
}
# ÐÑовеÑÑем бÑл ли пеÑедан пÑÑÑ Ðº ÑайлÑ
unless (defined $file) {
$self->{error} = 'Wrong file location!';
return 0;
}
# ÐÑовеÑÑем, Ñайл ли ÑÑо
unless (-f $file) {
$self->{error} = 'It\'s not file!';
return 0;
( run in 0.874 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )