MetaCPAN-Client
view release on metacpan or search on metacpan
lib/MetaCPAN/Client/Request.pm view on Meta::CPAN
use strict;
use warnings;
package MetaCPAN::Client::Request;
# ABSTRACT: Object used for making requests to MetaCPAN
$MetaCPAN::Client::Request::VERSION = '2.042000';
use Moo;
use Carp;
use JSON::MaybeXS qw<decode_json encode_json is_bool>;
use Ref::Util qw< is_arrayref is_hashref is_ref >;
use MetaCPAN::Client::Scroll;
use MetaCPAN::Client::Types qw< HashRef Int >;
with 'MetaCPAN::Client::Role::HasUA';
has _clientinfo => (
is => 'ro',
isa => HashRef,
lazy => 1,
builder => '_build_clientinfo',
);
has domain => (
is => 'ro',
default => sub {
$ENV{METACPAN_DOMAIN} and return $ENV{METACPAN_DOMAIN};
$_[0]->_clientinfo->{production}{domain};
},
);
has base_url => (
is => 'ro',
lazy => 1,
default => sub {
$ENV{METACPAN_DOMAIN} and return $ENV{METACPAN_DOMAIN};
$_[0]->_clientinfo->{production}{url};
},
);
has _is_agg => (
is => 'ro',
default => 0,
writer => '_set_is_agg'
);
has debug => (
is => 'ro',
isa => Int,
default => 0,
);
sub BUILDARGS {
my ( $self, %args ) = @_;
$args{domain} and $args{base_url} = $args{domain};
return \%args;
}
sub _build_clientinfo {
my $self = shift;
my $info;
eval {
$info = $self->ua->get( 'https://clientinfo.metacpan.org' );
$info = decode_json( $info->{content} );
is_hashref($info) and exists $info->{production} or die;
1;
}
or $info = +{
production => {
( run in 0.540 second using v1.01-cache-2.11-cpan-39bf76dae61 )