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      => \&init_session,
               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('handle_feed'),
               tmpdir   => '/tmp',        # optional caching
           );
           $kernel->post( 'atomagg', 'add_feed', $_ ) for @feeds;
       }

       sub handle_feed {
           my ( $kernel, $feed ) = ( $_[KERNEL], $_[ARG1]->[0] );
           for my $entry ( $feed->late_breaking_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.

   * alias
       POE alias to use for your instance of PoCo::AtomAggregator.

   * debug
       Boolean value to turn on verbose output.

   * tmpdir
       The tmpdir argument is used as the directory to cache Atom between
       fetches (and instances).

   * http_alias
       Optional. Alias of an existing PoCo::Client::HTTP.

   * follow_redirects
       Optional. Only if you don't have an exiting PoCo::Client::HTTP.
       Argument is passed to PoCoCl::HTTP to tell it the follow redirect
       level. (Defaults to 2)

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:

   * AnnoCPAN: Annotated CPAN documentation
       <http://annocpan.org/dist/POE-Component-AtomAggregator>

   * CPAN Ratings
       <http://cpanratings.perl.org/d/POE-Component-AtomAggregator>

   * RT: CPAN's request tracker
       <http://rt.cpan.org/NoAuth/Bugs.html?Dist=POE-Component-AtomAggregat
       or>

   * Search CPAN
       <http://search.cpan.org/dist/POE-Component-AtomAggregator>

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