# LotR++ for this one # minor mods by lenzo@cs.cmu.edu BEGIN { eval qq{ use LWP::UserAgent; use XML::RSS; use HTTP::Request::Common qw(GET); }; $no_headlines++ if($@); } sub get_headlines { my ($rdf_loc) = @_; if ($no_headlines) { return "error: RDF headlines require LWP::UserAgent, XML::RSS, and HTTP::Request... sorry."; } if ($rdf_loc) { &status("getting headlines from $rdf_loc"); my $ua = new LWP::UserAgent; if (my $proxy = main::getparam('httpproxy')) { $ua->proxy('http', $proxy) }; $ua->timeout(10); my $request = new HTTP::Request ("GET", $rdf_loc); my $result = $ua->request ($request); if ($result->is_success) { my ($str, $error); $str = $result->content; $rss = new XML::RSS; eval { $rss->parse($str); }; if ($@) { main::status("RDF: $@") # but soldier on, in hopes that we've gotten # something sensible nonetheless } my $return; if ( scalar(@{$rss->{"items"}}) > 0 ) { foreach my $item (@{$rss->{"items"}}) { $return .= $item->{"title"} . "; "; last if length($return) > $param{maxDataSize}; } $return =~ s/; $//; $return =~ s/\s+/ /sg; return $return; } else { return "I'm sorry; something went wrong with that RSS feed and I couldn't find anything sensible in it. Is it well-formed?" } } else { return "error: $rdf_loc wasn't successful"; } } else { return "error: no location stored for $where"; } }; 1; __END__