これ使ってるアプリケーションを学校でデモすることになった。だけど、学校ネットワークはプロキシ刺さないと外にでれないので、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;