CPAN-Testers-Reports-Query-JSON
view release on metacpan or search on metacpan
lib/CPAN/Testers/Reports/Query/JSON.pm view on Meta::CPAN
package CPAN::Testers::Reports::Query::JSON;
use Moose;
use namespace::autoclean;
use version;
use LWP::Simple;
use CPAN::Testers::WWW::Reports::Parser;
use CPAN::Testers::Reports::Query::JSON::Set;
our $VERSION = '0.04';
has distribution => ( isa => 'Str', is => 'ro', required => 1 );
has version => ( isa => 'Str', is => 'rw' );
has current_version => ( isa => 'Str', is => 'ro', lazy_build => 1 );
has versions => ( isa => 'ArrayRef[Str]', is => 'ro', lazy_build => 1 );
has report => (
is => 'rw',
lazy_build => 1,
isa => 'ArrayRef[CPAN::Testers::WWW::Reports::Report]',
);
sub _build_current_version {
my $self = shift;
return $self->versions()->[0];
}
sub _build_report {
my $self = shift;
my $data = $self->_raw_json();
my $obj = CPAN::Testers::WWW::Reports::Parser->new(
format => 'JSON',
data => $data,
objects => 1,
);
my @results;
while ( my $data = $obj->report() ) {
next unless $data->csspatch() eq 'unp';
push( @results, $data );
}
return \@results;
}
sub _build_versions {
my $self = shift;
my $report = $self->report();
my %versions;
foreach my $data ( @{$report} ) {
my $this_version = version->new( $data->version() );
$versions{ $this_version->stringify } = 1;
}
my @vers = reverse sort keys %versions;
return \@vers;
}
=head1 NAME
CPAN::Testers::Reports::Query::JSON - Find out about a distributions cpantesters results
=head1 SYNOPSIS
( run in 0.519 second using v1.01-cache-2.11-cpan-39bf76dae61 )