Home > POE-Component-IRC-Plugin-Trac-RSS

POE-Component-IRC-Plugin-Trac-RSS

POE-Component-IRC-Plugin-Trac-RSS is a project mainly written in Perl, based on the View license.

POE Component IRC Plugin for Trac RSS.

=head1 NAME

POE::Component::IRC::Plugin::Trac::RSS - A POE::Component::IRC plugin that provides RSS headline retrieval.

=head1 SYNOPSIS

use strict; use warnings; use POE qw(Component::IRC Component::IRC::Plugin::Trac::RSS);

my $nickname = 'TracRSS' . $$; my $ircname = 'TracRSS Name'; my $ircserver = 'irc.nnnnn.net'; my $port = 6667; my $channel = '#channel'; my $rss_url = 'http://'; my $rss_username = 'username'; my $rss_password = 'password';

my $irc = POE::Component::IRC->spawn( nick => $nickname, server => $ircserver, port => $port, ircname => $ircname, debug => 0, plugin_debug => 1, options => { trace => 0 }, ) or die "Oh noooo! $!";

POE::Session->create( package_states => [ 'main' => [ qw(_start irc_001 irc_join irc_tracrss_items) ], ], );

$poe_kernel->run(); exit 0;

sub _start {

Create and load our plugin

$irc->plugin_add( 'TracRSS' =>
    POE::Component::IRC::Plugin::Trac::RSS->new() );

$irc->yield( register => 'all' );
$irc->yield( connect => { } );
undef;

}

sub irc_001 { $irc->yield( join => $channel ); undef; }

sub ircjoin { my ($kernel,$sender,$channel) = @[KERNEL,SENDER,ARG1]; print STDERR "$channel $rss_url "; $kernel->yield( 'get_tracrss', { url => $rss_url, username => $rss_username, password => $rss_password, _channel => $channel } ); undef; }

sub irc_tracrssitems { my ($kernel,$sender,$args) = @[KERNEL,SENDER,ARG0]; my $channel = delete $args->{channel}; $kernel->post( $sender, 'privmsg', $channel, join(' ', @[ARG1..$#_] ) ); undef; }

=head1 DESCRIPTION

POE::Component::IRC::Plugin::Trac::RSS, is a L plugin that provides a mechanism for retrieving Trac/RSS headlines from given URLs.

=head1 CONSTRUCTOR

=over

=item new

Creates a new plugin object. Takes the following optional arguments:

'http_alias', you may provide the alias of an existing POE::Component::Client::HTTP component that the plugin will use instead of spawning it's own; 'follow_redirects', this argument is passed to PoCoCl::HTTP to inform it how to deal with following redirects, default is 2;

=back

=head1 INPUT EVENTS

The plugin registers the following state handler within your session:

=over

=item get_trac_rss

Takes a hashref as an argument with the following keys:

'url', the RSS based url to retrieve items for; 'username', Username to login in trac. 'password', Password to login in trac.

You may pass arbitary key/value pairs, but the keys must be prefixed with an underscore.

=back

=head1 OUTPUT

The following irc event is generated with the result of a 'get_headline' command:

=over

=item irc_tracrss_items

Has the following parameters:

'ARG0', the original hashref that was passed; 'ARG1' .. $#_, RSS headline item titles;

=item irc_tracrss_error

Has the following parameters:

'ARG0', the original hashref that was passed; 'ARG1', the error text;

=back

=head1 AUTHOR

Thiago Berlitz Rondon

=head1 LICENSE

Copyright C<(c)> Thiago Berlitz Rondon

This module may be used, modified, and distributed under the same terms as Perl itself. Please see the license that came with your Perl distribution for details.

=head1 SEE ALSO

L

Previous:cloud