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 )