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