All pastes #260057 Raw Edit

Mine

public text v1 · immutable
#260057 ·published 2006-11-27 23:53 UTC
rendered paste body
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;