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('emuscene_thread',$c);
# $thr->detach();
my $pid = fork();
if($pid==0) {
&emuscene_thread($c);
}
else {
$c->res->body('Grabbing Emuscene Feeds');
}
}
sub emuscene_thread {
my $c = shift;
$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->name($name);
$f->title('Updated to ' . $title);
$f->link($node->link());
$f->insert();
}
}
=head1 AUTHOR
Victor Igumnov
=head1 LICENSE
This library is free software, you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
1;