/[Grep]/lib/Grep/Action/AddFeed.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /lib/Grep/Action/AddFeed.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 72 by dpavlin, Thu Feb 22 16:57:23 2007 UTC revision 73 by dpavlin, Fri Feb 23 11:48:39 2007 UTC
# Line 83  sub take_action { Line 83  sub take_action {
83    
84          return $self->result->error( $r->status_line . " from $uri" ) unless ( $r->is_success );          return $self->result->error( $r->status_line . " from $uri" ) unless ( $r->is_success );
85    
86          if ($r->header('Content-type') =~ /xml/) {          my $ct = $r->header('Content-type') or warn "can't get Content-type";
87                  $self->result->message( "Assuming $uri is feed and using it" );          my $content = $r->content;
88    
89            Jifty->log->debug("got ", length( $content ), " bytes $ct");
90    
91            if ( $ct =~ /xml/ ) {
92                    $self->result->message( "Assuming $uri is feed from $ct" );
93                  return $self->SUPER::take_action( @ARGS );                  return $self->SUPER::take_action( @ARGS );
94          }          }
95    
96          my @feeds = Feed::Find->find_in_html( $r->content );          my @feeds = Feed::Find->find_in_html( \$content );
97    
98          if (@feeds) {          if (@feeds) {
99    
100                  Jifty->log->info("found possible feeds: ", dump( @feeds ));                  Jifty->log->info("found possible feeds: ", dump( @feeds ));
101    
102                  @feeds = map {                  my @search_feeds = map {
103                          my $t = $_;                          my $t = $_;
104                          $t =~ s/\b$search_moniker\b/%s/;                          $t =~ s/\b$search_moniker\b/%s/;
105                          $t                          $t
106                  } grep(/\b$search_moniker\b/,@feeds);                  } grep(/\b$search_moniker\b/,@feeds);
107    
108    
109                  my $feed_uri = shift @feeds;                  if ( my $feed_uri = shift @search_feeds ) {
110    
111                            $self->result->message('Found ' . @feeds . " feeds, using first: $feed_uri" );
112                            $self->argument_value('uri', $feed_uri);
113    
114                            Jifty->log->debug("calling parent take_action with new uri $feed_uri");
115    
116                            return $self->SUPER::take_action( @ARGS );
117    
118                  return $self->result->error("Can't find any feed at $uri") unless ( $feed_uri );                  } else {
119                            Jifty->log->debug("found feeds ", dump( @feeds ), " but none of them has search moniker!");
120                    }
121            }
122    
123            Jifty->log->debug("no feeds found, trying content_class detection");
124    
125            my $source = Grep::Source->new();
126    
127                  $self->result->message('Found ' . @feeds . " feeds, using first: $feed_uri" );          if ( my $class = $source->content_class( $content ) ) {
                 $self->argument_value('uri', $feed_uri);  
128    
129                  Jifty->log->debug("calling parent take_action with new uri $feed_uri");                  Jifty->log->debug("$class registred for feed $uri");
130    
131                    $self->argument_value('source', $source);
132                    $self->result->message("Found $class scraper for $uri" );
133                  return $self->SUPER::take_action( @ARGS );                  return $self->SUPER::take_action( @ARGS );
134    
135          } else {          } else {
136    
                 warn "no feeds in ", $r->content;  
   
137                  $self->result->error('No feeds found on supplied URI');                  $self->result->error('No feeds found on supplied URI');
138                  return 0;                  return 0;
139    
140          }          }
141    
142  }  }

Legend:
Removed from v.72  
changed lines
  Added in v.73

  ViewVC Help
Powered by ViewVC 1.1.26