package Emureports::Controller::Aggregator;
use strict;
use warnings;
use base 'Catalyst::Controller';
=head1 NAME
Emureports::Controller::Aggregator - Catalyst Controller
=head1 DESCRIPTION
Catalyst Controller.
=head1 METHODS
=cut
=head2 index
=cut
use LWP::UserAgent;
use XML::Feed;
use threads;
sub setup_request : Local {
my ($self,$c,$url)=@_;
my $ua = LWP::UserAgent->new();
$ua->agent('EmuReports/0.1');
my $req = HTTP::Request->new(GET => $url);
my $res = $ua->request($req);
my $feed = $res->{_content};
$c->stash->{xml} = XML::Feed->parse(\$feed);
}
sub get_emuscene : Local {
my ($self,$c)=@_;
my $thr=threads->create($self->emuscene_thread($c));
$thr->detach();
$c->res->body('Grabbing Emuscene Feeds');
}
sub emuscene_thread {
my ($self,$c)=@_;
$c->model('EmuReports::FeedUpdates')->delete();
$c->forward('/aggregator/setup_request',['http://www.emuscene.com/rss.php']);
foreach my $node ($c->stash->{xml}->entries()) {
my $f = $c->model('EmuReports::FeedUpdates')->new({});
my ($name,$title) = $node->title() =~ /(.*?) Updated to (.*?)$/i;
$f->link($node->link()); $f->insert(); } $c->res->body('Grabbed Emuscene Feed!'); }
$f->name($name);
$f->title('Updated to ' . $title);
1;