| | 12 | sub TO_URI_FETCH_RESPONSE |
|---|
| | 13 | { |
|---|
| | 14 | my ($r) = @_; |
|---|
| | 15 | |
|---|
| | 16 | my $ufr = URI::Fetch::Response->new(); |
|---|
| | 17 | $ufr->http_status($r->code); |
|---|
| | 18 | $ufr->http_response($r); |
|---|
| | 19 | $ufr->status( |
|---|
| | 20 | $r->previous && $r->previous->code == &HTTP::Status::RC_MOVED_PERMANENTLY ? &URI::Fetch::URI_MOVED_PERMANENTLY : |
|---|
| | 21 | $r->code == &HTTP::Status::RC_GONE ? &URI::Fetch::URI_GONE : |
|---|
| | 22 | $r->code == &HTTP::Status::RC_NOT_MODIFIED ? &URI::Fetch::URI_NOT_MODIFIED : |
|---|
| | 23 | &URI::Fetch::URI_OK |
|---|
| | 24 | ); |
|---|
| | 25 | $ufr->etag($r->header('ETag')); |
|---|
| | 26 | $ufr->last_modified($r->header('Last-Modified')); |
|---|
| | 27 | $ufr->uri($r->request->uri); |
|---|
| | 28 | $ufr->content($r->content); |
|---|
| | 29 | $ufr->content_type($r->content_type); |
|---|
| | 30 | |
|---|
| | 31 | return $ufr; |
|---|
| | 32 | } |
|---|
| | 33 | |
|---|
| 18 | | $self->next::method($c, $res); |
|---|
| 19 | | $self->gungho_plugin->handle_feed($res->request->uri, $res->content_ref); |
|---|
| | 42 | $self->next::method($c, $req, $res); |
|---|
| | 43 | |
|---|
| | 44 | my $plugin = $self->gungho_plugin; |
|---|
| | 45 | my $url = $req->url; |
|---|
| | 46 | my $feed_url = Plagger::FeedParser->discover($ufr); |
|---|
| | 47 | if ($url eq $feed_url) { |
|---|
| | 48 | $plugin->handle_feed($url, \$ufr->content, $req->notes('feed')); |
|---|
| | 49 | } elsif ($feed_url) { |
|---|
| | 50 | my $clone = $req->clone; |
|---|
| | 51 | $clone->uri($feed_url); |
|---|
| | 52 | $plugin->gungho->send_request($clone); |
|---|
| | 53 | } else { |
|---|
| | 54 | return; |
|---|
| | 55 | } |
|---|