NAME

POE::Component::AtomAggregator - Watch Muliple Atom Feeds for New Headlines

VERSION

Version 1.0

SYNOPSIS

        #!/usr/bin/perl
        use strict;
        use warnings;
        use POE qw( Component::AtomAggregator );

        my @feeds = (
            {   url   => "http://xantus.vox.com/library/posts/atom.xml",
                name  => "xantus",
                delay => 600,
            },
            {   url   => "http://www.vox.com/explore/posts/atom.xml",
                name  => "vox",
                delay => 60,
            },
        );

        POE::Session->create(
            inline_states => {
                start      => \&initsession,
                handle_feed => \&handle_feed,
            },
        );

        $poe_kernel->run();

        sub init_session {
            my ( $kernel, $heap, $session ) = @[ KERNEL, HEAP, SESSION ];
            $heap->{atomagg} = POE::Component::AtomAggregator->new(
                alias    => 'atomagg',
                debug    => 1,
                callback => $session->postback('handlefeed'),
                tmpdir   => '/tmp',        # optional caching 
            );
            $kernel->post( 'atomagg', 'add_feed', $_ ) for @feeds;
        }

        sub handle_feed {
            my ( $kernel, $feed ) = ( $_[KERNEL], $[ARG1]->[0] );
            for my $entry ( $feed->latebreaking_news ) {
        
                # this is where this module differs from RSSAggregator!
            
                # do stuff with the XML::Atom::Entry object
                print $entry->title . "\n";
            }
        }

CONSTRUCTORS
POE::Component::AtomAggregator->new( %hash ); Create a new instace of PoCo::AtomAggregator.

METHODS
$atomagg->feed_list
Returns the current feeds as an array or array_ref.

$atomagg->feeds
Returns a hash ref of feeds with the key being the feeds name.

$atomagg->feed( $feed_name )
Accessor to access a the XML::Atom::Feed object via a feed's name.

$atomagg->add_feed( $hash_ref )
The hash reference you pass in to add_feed is passed to XML::Atom::Feed->new($hash_ref). ( see XML::Atom::Feed )

$atomagg->remove_feed( $feed_name )
Pass in the name of the feed you want to remove.

$atomagg->pause_feed( $feed_name )
Pass in the name of the feed you want to pause.

$atomagg->resume_feed( $feed_name )
Pass in the name of the feed you want to resume (that you previously paused).

$atomagg->shutdown
Shutdown the instance of PoCo::AtomAggregator.

AUTHOR

David Davis, aka Xantus, "<xantus at cpan.org>"

BUGS

Please report any bugs or feature requests to "bug-poe-component-atomaggregator at rt.cpan.org", or through the web interface at
<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=POE-Component-AtomAggreg ator>.

SUPPORT

You can find documentation for this module with the perldoc command.

perldoc POE::Component::AtomAggregator

You can also look for information at:

NOTES

All XML::Atom::Feed objects mentioned in this doc are actually POE::Component::AtomAggregator::Feed objects that have extra accessors and methods to add late_breaking_news functionality and non blocking file IO. You can use the object as if it were a XML::Atom::Feed object.

ACKNOWLEDGEMENTS

A big thank you to Jeff Bisbee for POE::Component::RSSAggregator

This module entirely based off his work, with changes to use XML::Atom instead of XML::RSS

Also a big thanks to miyagawa for XML::Atom::Feed.

COPYRIGHT & LICENSE

Copyright 2006 David Davis, aka Xantus

All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

XML::Atom::Feed, XML::Atom::Entry