NAME
App::CPAN::Get::MetaCPAN - Helper class to work with MetaCPAN distribution files.
SYNOPSIS
use App::CPAN::Get::MetaCPAN;
my $obj = App::CPAN::Get::MetaCPAN->new(%params);
my $content_hr = $obj->search($args_hr);
$obj->save($uri, $file);
METHODS
new
my $obj = App::CPAN::Get::MetaCPAN->new(%params);
Constructor.
lwp_user_agentLWP::User agent object.
Default value is undef.
Returns instance of object.
search
my $content_hr = $obj->search($args_hr);
Search on MetaCPAN API.
Variable $args_hr is reference to hash with keys:
include_dev
Flag that means development versions.
package
Package name (e.g. App::Pod::Example).
version
Version of package.
version_range
Version range (e.g. >0.15,<0.17).
Result is reference to hash with information about download URL. Keys are checksum_md5, date, download_url, version, status, release and checksum_sha256.
Returns reference to hash.
save
$obj->save($uri, $file);
Save URI to file.
Returns undef.
ERRORS
new():
        From Class::Utils::set_params():
                Unknown parameter '%s'.
        Parameter 'lwp_user_agent' must be a 'LWP::UserAgent instance.
search():
        Bad search options.
        Cannot connect to CPAN server.
        Module '%s' doesn't exist.
        Package doesn't present.
save():
        Cannot connect to CPAN server.
                HTTP code: %s
                HTTP message: %s
        Cannot fetch '%s' URI.
                HTTP code: %s
                HTTP message: %s
        Cannot fetch '%s'.
                HTTP code: %s
                HTTP message: %s
EXAMPLE1
use strict;
use warnings;
use App::CPAN::Get::MetaCPAN;
use Data::Printer;
my $obj = App::CPAN::Get::MetaCPAN->new;
my $content_hr = $obj->search({
        'package' => 'App::Pod::Example',
        'version' => '0.20',
});
p $content_hr;
# Output (2024/06/23):
# {
#     checksum_md5      "dcc4d6f0794c6fc985a6b3c9bd22f88d",
#     checksum_sha256   "ca71d7d17fe5ea1cd710b9fce554a1219e911baefcaa8ce1ac9c09425f6ae445",
#     date              "2023-03-29T09:57:36" (dualvar: 2023),
#     download_url      "https://cpan.metacpan.org/authors/id/S/SK/SKIM/App-Pod-Example-0.20.tar.gz",
#     release           "App-Pod-Example-0.20",
#     status            "latest",
#     version           0.2
# }
EXAMPLE2
use strict;
use warnings;
use App::CPAN::Get::MetaCPAN;
use Data::Printer;
my $obj = App::CPAN::Get::MetaCPAN->new;
my $content_hr = $obj->search({
        'package' => 'App::Pod::Example',
        'version_range' => '>0.18,<=0.40',
});
p $content_hr;
# Output (2024/06/23):
# {
#     checksum_md5      "dcc4d6f0794c6fc985a6b3c9bd22f88d",
#     checksum_sha256   "ca71d7d17fe5ea1cd710b9fce554a1219e911baefcaa8ce1ac9c09425f6ae445",
#     date              "2023-03-29T09:57:36" (dualvar: 2023),
#     download_url      "https://cpan.metacpan.org/authors/id/S/SK/SKIM/App-Pod-Example-0.20.tar.gz",
#     release           "App-Pod-Example-0.20",
#     status            "latest",
#     version           0.2
# }
DEPENDENCIES
Class::Utils, Cpanel::JSON::XS, English, Error::Pure, IO::Barf, LWP::UserAgent, Readonly, Scalar::Util, URI.
REPOSITORY
https://github.com/michal-josef-spacek/App-CPAN-Get
AUTHOR
Michal Josef Špaček mailto:skim@cpan.org
LICENSE AND COPYRIGHT
© 2021-2025 Michal Josef Špaček
BSD 2-Clause License
VERSION
0.14