App-cpan2arch
view release on metacpan or search on metacpan
lib/App/cpan2arch/GetMetadata.pm view on Meta::CPAN
$self->_psub;
$_mua_mcpan = $self->_get_mua('mcpan');
return $self;
}
# Create a Mojo::UserAgent instance.
method _get_mua ($type)
{
return undef if $type ne 'mcpan' && $type ne 'arch';
# Caching support
my $has_muac = do {
try {
require Mojo::UserAgent::Cached;
Mojo::UserAgent::Cached->VERSION('1.25');
}
catch ($e) {
# Use Mojo::UA as fallback.
require Mojo::UserAgent;
$self->_pdbg("Mojo::UserAgent::Cached is not installed\n\n");
undef;
}
};
my $has_chi = do {
if ( defined $has_muac ) {
try {
require CHI;
CHI->VERSION('0.61');
}
catch ($e) {
$self->_pdbg("CHI is not installed\n\n");
undef;
}
}
};
my %env = $self->env;
my %opts = $self->opts;
my $mua;
if ( defined $has_muac && defined $has_chi ) {
require Mojo::Log;
# Silence logger
my $logger;
$logger = Mojo::Log->new( path => '/dev/null' ) unless $env{debug};
$mua = Mojo::UserAgent::Cached->new(
$env{debug}
? ()
: ( logger => $logger ),
);
# Use CHI as the cache backend.
{
my $path =
$type eq 'mcpan'
? $env{cache_mcpan_path}
: $env{cache_arch_path};
my $chi;
$chi = CHI->new(
driver => 'File',
root_dir => $path,
expires_in => $env{cache_expiration},
) unless $env{cache_ignore};
if ( defined $chi ) {
$chi->clear
if defined $opts{clear}
|| ( $type eq 'mcpan' && defined $opts{clear_mcpan} )
|| ( $type eq 'arch' && defined $opts{clear_arch} );
}
$mua->cache_agent($chi) unless $env{cache_ignore};
}
}
else {
$mua = Mojo::UserAgent->new;
}
$mua->transactor->name( $env{user_agent} ) if defined $mua;
return $mua;
}
method _get_module ($module)
{
$self->_psub;
my $prog = $self->prog;
my $url = $_endpoints{module} . "$module?fields=distribution";
my $json;
my $res = do {
try {
my %env = $self->env;
local $ENV{MUAC_NOCACHE} = true if $env{cache_ignore};
$_mua_mcpan->get($url)->result;
}
catch ($e) {
warn $e;
undef;
}
};
if ( defined $res && $res->is_success ) {
$self->_pdbg("\n");
$json = $res->json;
}
if ( !defined $json ) {
warn "$prog: failed to fetch $module module\n";
$self->_pdbg("\n");
return undef;
( run in 0.858 second using v1.01-cache-2.11-cpan-600a1bdf6e4 )