WWW::Ohloh::API::Message - a Ohloh message


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

Index


Code Index:

NAME

Top

WWW::Ohloh::API::Message - a Ohloh message

SYNOPSIS

Top

    use WWW::Ohloh::API;

    my $ohloh = WWW::Ohloh::API->new( api_key => $my_api_key );
    my $messages =  $ohloh->fetch_messages( account => $id );

    while( my $msg = $messages->next ) {
        print $msg->body, "\n";
    }




DESCRIPTION

Top

W::O::A::Message contains the information associated with an Ohloh message.

METHODS

Top

API Data Accessors

id

Returns the message's id.

account

Returns the author of the message (as a string).

avatar

Returns (if available) the url pointing to the message author's avatar.

creation_time

Returns the time at which the message has been written.

body

Returns the body of the message.

tags

Returns the tags associated to the message as an array of WWW::Ohloh::API::Message::Tag objects.

Other Methods

as_xml

Return the message's information 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::Messages, WWW::Ohloh::API::Message::Tag.

*

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

*

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

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.

The as_xml() method returns a re-encoding of the account data, which can differ of the original xml document sent by the Ohloh server.

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::Message;

use strict;
use warnings;

use Carp;
use Object::InsideOut;
use XML::LibXML;

use WWW::Ohloh::API::Message::Tag;

our $VERSION = '0.3.1';

my @request_url_of : Field : Arg(request_url) : Get( request_url );
my @ohloh_of : Field : Arg(ohloh);

my @api_fields = qw/ id account avatar created_at body /;

my @id_of : Field : Set(_set_id) : Get(id);
my @account_of : Field : Set(_set_account) : Get(account);
my @avatar_of : Field : Set(_set_avatar) : Get(avatar);
my @creation_time_of : Field : Set(_set_creation_time) : Get(creation_time);
my @body_of : Field : Set(_set_body) : Get(body);
my @tags_of : Field;

my %init_args : InitArgs = ( 'xml' => '', );

sub _init : Init {
    my ( $self, $args ) = @_;

    $self->load_xml( $args->{xml} ) if $args->{xml};
}

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

sub load_xml {
    my $self = shift;
    my $dom  = shift;

    $self->_set_id( $dom->findvalue("id/text()") );
    $self->_set_account( $dom->findvalue("account/text()") );
    $self->_set_avatar( $dom->findvalue('avatar/@uri') );
    $self->_set_creation_time( $dom->findvalue("created_at/text()") );
    $self->_set_body( $dom->findvalue("body/text()") );

    for ( $dom->findnodes('tags/*') ) {
        $self->insert_tag(
            WWW::Ohloh::API::Message::Tag->new(
                ohloh => $ohloh_of[$$self],
                xml   => $_,
            ) );
    }

}

sub tags {
    my $self = shift;
    return $tags_of[$$self] ? @{ $tags_of[$$self] } : ();
}

sub insert_tag {
    my $self = shift;
    push @{ $tags_of[$$self] }, @_;
}

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

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

    $w->startTag('language');

    for my $e (@api_fields) {
        $w->dataElement( $e => $self->$e );
    }

    $w->endTag;

    return $xml;
}

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

sub is_code {
    my $self = shift;

    return $self->category eq 'code';
}

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

sub is_markup {
    my $self = shift;

    return $self->category eq 'markup';
}

'end of WWW::Ohloh::API::Language';

__END__