File: example-1.pl

package info (click to toggle)
libpoe-component-rssaggregator-perl 1.11-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 112 kB
  • sloc: perl: 407; makefile: 2
file content (45 lines) | stat: -rw-r--r-- 1,075 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/perl
use strict;
use warnings;
use POE;
use POE::Component::RSSAggregator;

my @feeds = (
    {   url   => "http://www.jbisbee.com/rdf/",
        name  => "jbisbee",
        delay => 10,
    },
    {   url   => "http://lwn.net/headlines/rss",
        name  => "lwn",
        delay => 300,
    },
);

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->{rssagg} = POE::Component::RSSAggregator->new(
        alias    => 'rssagg',
        debug    => 1,
        callback => $session->postback("handle_feed"),
        tmpdir   => '/tmp',        # optional caching 
    );
    $kernel->post( 'rssagg', 'add_feed', $_ ) for @feeds;
}

sub handle_feed {
    my ( $kernel, $feed ) = ( $_[KERNEL], $_[ARG1]->[0] );
    for my $headline ( $feed->late_breaking_news ) {

        # do stuff with the XML::RSS::Headline object
        print $headline->headline . "\n";
    }
}