WWW::Ohloh::API::ActivityFacts - an Ohloh project's set of activity facts


WWW-Ohloh-API documentation Contained in the WWW-Ohloh-API distribution.

Index


Code Index:

NAME

Top

WWW::Ohloh::API::ActivityFacts - an Ohloh project's set of activity facts

SYNOPSIS

Top

    use WWW::Ohloh::API;

    my $ohloh = WWW::Ohloh::API->new( api_key => $my_api_key );
    my $project = $ohloh->get_project( $project_id );
    my $facts =  $ohloh->activity_facts;

    print "number of facts for the project: ", $facts->total;

DESCRIPTION

Top

W::O::A::ActivityFacts gathers all the activity facts known about a project. To be properly populated, it must be retrieved via the get_activity_facts method of a WWW::Ohloh::API object, or the activity_facts() method of a WWW::Ohloh::API::Project object.

METHODS

Top

all

Return the retrieved activity facts as a list of WWW::Ohloh::API::ActivityFact objects.

Example:

    # sum the overall number of commits for the project
    my $commits;
    for my $fact ( $facts->all ) {
        $commits += $fact->commits;
    }

as_xml

Return the activity facts as an XML string. Note that this is not the exact xml document as returned by the Ohloh server.

SEE ALSO

Top

*

WWW::Ohloh::API, WWW::Ohloh::API::ActivityFact, WWW::Ohloh::API::Language, WWW::Ohloh::API::Project, WWW::Ohloh::API::Analysis, WWW::Ohloh::API::Account.

*

Ohloh API reference: http://www.ohloh.net/api/getting_started

*

Ohloh Account API reference: http://www.ohloh.net/api/reference/activity_fact

VERSION

Top

This document describes WWW::Ohloh::API version 0.3.1

BUGS AND LIMITATIONS

Top

WWW::Ohloh::API is very extremely alpha quality. It'll improve, but till then: Caveat emptor.

Please report any bugs or feature requests to bug-www-ohloh-api@rt.cpan.org, or through the web interface at http://rt.cpan.org.

AUTHOR

Top

Yanick Champoux <yanick@cpan.org>

LICENCE AND COPYRIGHT

Top


WWW-Ohloh-API documentation Contained in the WWW-Ohloh-API distribution.

package WWW::Ohloh::API::ActivityFacts;

use strict;
use warnings;

use Carp;
use Object::InsideOut;
use XML::LibXML;
use Readonly;
use List::MoreUtils qw/ any /;
use WWW::Ohloh::API::ActivityFact;

our $VERSION = '0.3.1';

my @ohloh_of : Field : Arg(ohloh);
my @project_of : Field : Arg(project);
my @analysis_of : Field : Arg(analysis);
my @facts_of : Field;

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

sub _init : Init {
    my $self = shift;

    my ( $url, $xml ) =
      $ohloh_of[$$self]
      ->_query_server( "projects/$project_of[ $$self ]/analyses/"
          . "$analysis_of[ $$self ]/activity_facts.xml" );

    $facts_of[$$self] =
      [ map { WWW::Ohloh::API::ActivityFact->new( xml => $_ ) }
          $xml->findnodes('activity_fact') ];

    return;
}

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

sub as_xml {
    my $self = shift;
    my $xml;
    my $w = XML::Writer->new( OUTPUT => \$xml );

    $w->startTag('activity_facts');

    $xml .= $_->as_xml for @{ $facts_of[$$self] };

    $w->endTag;

    return $xml;
}

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

sub all {
    my $self = shift;

    return @{ $facts_of[$$self] };
}

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

sub latest {
    my $self = shift;
    return $facts_of[$$self][-1];
}

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

sub total {
    my $self = shift;
    return scalar @{ $facts_of[$$self] };
}

'end of WWW::Ohloh::API::ActivityFacts';
__END__