App-cpm

 view release on metacpan or  search on metacpan

lib/App/cpm/Resolver/MetaCPAN.pm  view on Meta::CPAN


    my %query = (
        ( ($self->{dev} || $task->{dev}) ? (dev => 1) : () ),
        ( $task->{version_range} ? (version => $task->{version_range}) : () ),
    );
    my $query = join "&", map { "$_=" . encode($query{$_}) } sort keys %query;
    my $uri = "$self->{uri}$task->{package}" . ($query ? "?$query" : "");
    my $res;
    for (1..2) {
        $res = $ctx->{http}->get($uri);
        last if $res->{success} or $res->{status} == 404;
    }
    if (!$res->{success}) {
        my $error = "$res->{status} $res->{reason}, $uri";
        $error .= ", $res->{content}" if $res->{status} == 599;
        return { error => $error };
    }

    my $hash = eval { JSON::PP::decode_json($res->{content}) } or return;
    my $dist = App::cpm::DistNotation->new_from_uri($hash->{download_url});
    return {

lib/App/cpm/Resolver/MetaDB.pm  view on Meta::CPAN

        %argv,
        uri => $uri,
        mirror => $mirror,
    }, $class;
}

sub _get ($self, $ctx, $uri) {
    my $res;
    for (1..2) {
        $res = $ctx->{http}->get($uri);
        last if $res->{success} or $res->{status} == 404;
    }
    $res;
}

sub resolve ($self, $ctx, $task) {
    if (defined $task->{version_range} and $task->{version_range} =~ /(?:<|!=|==)/) {
        my $uri = "$self->{uri}history/$task->{package}";
        my $res = $self->_get($ctx, $uri);
        if (!$res->{success}) {
            my $error = "$res->{status} $res->{reason}, $uri";



( run in 0.775 second using v1.01-cache-2.11-cpan-39bf76dae61 )