AnyEvent-Net-Curl-Queued
view release on metacpan or search on metacpan
lib/AnyEvent/Net/Curl/Queued/Easy.pm view on Meta::CPAN
ScalarRef
Str
);
use Scalar::Util qw(set_prototype);
use URI;
# kill Net::Curl::Easy prototypes as they wreck around/before/after method modifiers
set_prototype \&Net::Curl::Easy::new => undef;
set_prototype \&Net::Curl::Easy::getinfo => undef;
set_prototype \&Net::Curl::Easy::setopt => undef;
extends 'Net::Curl::Easy';
use AnyEvent::Net::Curl::Const;
use AnyEvent::Net::Curl::Queued::Stats;
no if ($] >= 5.017010), warnings => q(experimental);
our $VERSION = '0.049'; # VERSION
has json => (
is => 'ro',
isa => InstanceOf['JSON'],
default => sub { JSON->new->utf8->allow_blessed->convert_blessed },
lazy => 1,
);
has curl_result => (is => 'ro', isa => Object, writer => 'set_curl_result');
has data => (is => 'ro', isa => ScalarRef, writer => 'set_data');
has force => (is => 'ro', isa => Bool, default => sub { 0 });
has header => (is => 'ro', isa => ScalarRef, writer => 'set_header');
has _autodecoded => (is => 'rw', isa => Bool, default => sub { 0 });
has http_response => (is => 'ro', isa => Bool, default => sub { 0 }, writer => 'set_http_response');
has post_content => (is => 'ro', isa => Str, default => sub { '' }, writer => 'set_post_content');
sub _URI_type {
my $uri = shift;
return $uri->isa('URI')
? $uri
: URI->new(q...$uri)
}
has initial_url => (is => 'ro', isa => InstanceOf['URI'], coerce => \&_URI_type, required => 1);
has final_url => (is => 'ro', isa => InstanceOf['URI'], coerce => \&_URI_type, writer => 'set_final_url');
has opts => (is => 'ro', isa => HashRef, default => sub { {} });
has queue => (
is => 'rw',
isa => AnyOf[
InstanceOf['AnyEvent::Net::Curl::Queued'],
InstanceOf['YADA'],
],
weak_ref => 1,
);
has sha => (is => 'ro', isa => InstanceOf['Digest::SHA'], default => sub { Digest::SHA->new(256) }, lazy => 1);
has response => (is => 'ro', isa => InstanceOf['HTTP::Response'], writer => 'set_response');
sub res { my ($self, @args) = @_; return $self->response(@args) }
has retry => (is => 'ro', isa => Int, default => sub { 10 });
has stats => (is => 'ro', isa => InstanceOf['AnyEvent::Net::Curl::Queued::Stats'], default => sub { AnyEvent::Net::Curl::Queued::Stats->new }, lazy => 1);
has use_stats => (is => 'ro', isa => Bool, default => sub { 0 });
has [qw(on_init on_finish)] => (is => 'ro', isa => CodeRef);
## no critic (RequireArgUnpacking)
sub BUILDARGS {
return ($_[0] eq ref $_[-1])
? $_[-1]
: FOREIGNBUILDARGS(@_);
}
sub FOREIGNBUILDARGS {
my $class = shift;
if (@_ == 1 and q(HASH) eq ref $_[0]) {
return shift;
} elsif (@_ == 1) {
return { initial_url => shift };
} elsif (@_ % 2 == 0) {
return { @_ };
} else {
confess 'Should be initialized as ' . $class . '->new(Hash|HashRef|URL)';
}
}
sub unique {
my ($self) = @_;
# make URL-friendly Base64
my $digest = $self->sha->clone->b64digest;
$digest =~ tr{+/}{-_};
# return the signature
( run in 0.735 second using v1.01-cache-2.11-cpan-f56aa216473 )