これ使ってるアプリケーションを学校でデモすることになった。だけど、学校ネットワークはプロキシ刺さないと外にでれないので、http_proxyを見てくれるようにした。あとXML::FeedはXML::RSS::LibXML使うように。
プロキシ刺すのにURI::Fetch調べたんだけど、自分で作ったUserAgentも渡せるんだねー。
以下diff。
--- ./Feed_old.pm 2006-09-03 19:08:48.000000000 +0900
+++ ./Feed.pm 2006-10-02 17:31:09.000000000 +0900
@@ -5,10 +5,15 @@
use base qw(Catalyst::Model Class::Accessor);
use Carp;
-use XML::Feed;
use NEXT;
use URI;
+use URI::Fetch;
+use LWP::UserAgent;
use Catalyst::Model::XML::Feed::Item;
+use XML::Feed;
+use XML::Feed::RSS;
+$XML::Feed::RSS::PREFERRED_PARSER = "XML::RSS::LibXML";
+
__PACKAGE__->mk_accessors(qw|ttl feeds|);
@@ -161,14 +166,20 @@
my $name;
my $uri;
+ my $ua = LWP::UserAgent->new;
+ $ua->env_proxy;
if($arg2){
# get only one feed
$name = $arg1;
$uri = URI->new($arg2);
+ my $res = URI::Fetch->fetch($uri, UserAgent => $ua)
+ or croak "can't load $uri";
+ my $content = $res->content;
+
my $feed;
eval {
- $feed = XML::Feed->parse($uri);
+ $feed = XML::Feed->parse(\$content);
};
if($@){
my @feeds = XML::Feed->find_feeds($arg2);
@@ -202,7 +213,15 @@
my $self = shift;
my $uri = shift;
my $name = shift;
- my $feed = XML::Feed->parse($uri);
+
+ my $ua = LWP::UserAgent->new;
+ $ua->env_proxy;
+
+ my $res = URI::Fetch->fetch($uri, UserAgent => $ua)
+ or croak "can't load $uri";
+ my $content = $res->content;
+
+ my $feed = XML::Feed->parse(\$content);
$feed->title($name) if $name;
my $obj = Catalyst::Model::XML::Feed::Item->new($feed, $uri);
$name ||= $uri;