AnyEvent-Net-Curl-Queued
view release on metacpan or search on metacpan
lib/YADA.pm view on Meta::CPAN
package YADA;
# ABSTRACT: "Yet Another Download Accelerator": alias for AnyEvent::Net::Curl::Queued
use feature qw(switch);
use strict;
use utf8;
use warnings qw(all);
use Digest::SHA qw(sha256_base64);
use Moo;
use MooX::Types::MooseLike::Base qw(
ArrayRef
HashRef
Object
Str
);
use URI;
extends 'AnyEvent::Net::Curl::Queued';
use YADA::Worker;
no if ($] >= 5.017010), warnings => q(experimental);
our $VERSION = '0.049'; # VERSION
has _queue => (
is => 'ro',
isa => ArrayRef[Object],
default => sub { [] },
);
has _unique_url => (
is => 'ro',
isa => HashRef[Str],
default => sub { {} },
);
# serious DWIMmery ahead!
## no critic (RequireArgUnpacking)
around append => sub { _dwim(append => @_) };
around prepend => sub { _dwim(prepend => @_) };
sub _dwim {
my $type = shift;
my $orig = shift;
my $self = shift;
if (1 < scalar @_) {
my (%init, @url);
for my $arg (@_) {
for (ref $arg) {
when ($_ eq '' or m{^URI::}x) {
push @url, $arg;
} when ('ARRAY') {
push @url, @{$arg};
} when ('CODE') {
unless (exists $init{on_finish}) {
$init{on_finish} = $arg;
} else {
@init{qw{on_init on_finish}} = ($init{on_finish}, $arg);
}
} when ('HASH') {
$init{$_} = $arg->{$_}
for keys %{$arg};
( run in 0.616 second using v1.01-cache-2.11-cpan-39bf76dae61 )