sub get_feed { my ($self, $feed, %opts) = @_; if (ref($feed)){ return $feed if $feed->isa('XML::Atom::Feed'); if ($feed->isa('URI')) { my %params = ($self->{_auth}->auth_params('GET', $feed), %opts); my $r = $self->{_ua}->get("$feed", %params); my $redirect_tries = 0; while ($r->code == 302 || $r->code == 301) { my $location = $r->header('location'); %params = ($self->{_auth}->auth_params('GET', $location), %opts); $r = $self->{_ua}->get($location, %params); $redirect_tries++; die "Too many redirects ($redirect_tries)" if $redirect_tries > $REDIRECT_MAX; } --> die $r->status_line unless $r->is_success; $feed = $r->content; } } return XML::Atom::Feed->new(\$feed); }