/[Grep]/lib/Grep/Action/Fetch.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/Fetch.pm

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

revision 70 by dpavlin, Wed Feb 21 03:04:48 2007 UTC revision 71 by dpavlin, Thu Feb 22 18:12:35 2007 UTC
# Line 90  sub take_action { Line 90  sub take_action {
90    
91          Jifty->log->info( $message );          Jifty->log->info( $message );
92    
         my $items = Grep::Model::ItemCollection->new();  
   
93          my $ua = LWP::UserAgent->new;          my $ua = LWP::UserAgent->new;
94          $ua->default_header( 'Cookie' => $feed->cookie );          $ua->default_header( 'Cookie' => $feed->cookie );
95          my $r = $ua->get( $uri );          my $r = $ua->get( $uri );
# Line 103  sub take_action { Line 101  sub take_action {
101    
102          return $self->result->error( "No content returned from $uri" ) unless length( $content ) > 1;          return $self->result->error( "No content returned from $uri" ) unless length( $content ) > 1;
103    
104            my ( $items, $new ) = $self->collection_from_feed( $feed, $content );
105    
106            if ( my $count = $items->count ) {
107    
108                    # construct a proper sentence :-)
109                    my $message = $count
110                            . ( $new == $count ? ' new' : '' )
111                            . ( $new == 0 ? ' old' : '' )
112                            . ' results '  
113                            . ( $new && $new < $count ? "of which $new new " : '' )
114                            . "for '$q' in " . $feed->title;
115            
116                    $self->result->message( $message );
117    
118                    $self->result->content( items => $items );
119                    $self->result->content( count => $items->count );
120    
121                    Grep::Search->finish if $new;
122    
123                    return $items;
124    
125            } else {
126                    return $self->result->error( "No results for '$q' in " . $feed->title );
127            }
128    }
129    
130    
131    =head2 collection_from_feed
132    
133      my ( $collection, $new ) = $self->collection_from_feed( $feed, '<xml>souce of feed</xml>');
134    
135    =cut
136    
137    sub collection_from_feed {
138            my $self = shift;
139            
140            my ( $feed, $content ) = @_;
141    
142            die "feed is not a Grep::Model::Feed but ", ref $feed unless $feed->isa('Grep::Model::Feed');
143    
144          my $xml_feed = XML::Feed->parse( \$content )          my $xml_feed = XML::Feed->parse( \$content )
145                  or return $self->result->error( $feed->title, " returned ", XML::Feed->errstr, " for $uri" );                  or return $self->result->error( $feed->title, " returned ", XML::Feed->errstr );
146    
147    
148          warn "getting entries from ", $xml_feed->title, "\n";          warn "getting entries from ", $xml_feed->title, "\n";
149    
150            my $items = Grep::Model::ItemCollection->new();
151    
152          my $new;          my $new;
153    
154          for my $entry ($xml_feed->entries) {          for my $entry ($xml_feed->entries) {
# Line 140  sub take_action { Line 180  sub take_action {
180                  } else {                  } else {
181                          warn "can't add entry ", dump( $entry ), "\n";                          warn "can't add entry ", dump( $entry ), "\n";
182                  }                  }
   
         }  
   
         if ( my $count = $items->count ) {  
   
                 # construct a proper sentence :-)  
                 my $message = $count  
                         . ( $new == $count ? ' new' : '' )  
                         . ( $new == 0 ? ' old' : '' )  
                         . ' results '    
                         . ( $new && $new < $count ? "of which $new new " : '' )  
                         . "for '$q' in " . $feed->title;  
           
                 $self->result->message( $message );  
   
                 $self->result->content( items => $items );  
                 $self->result->content( count => $items->count );  
   
                 Grep::Search->finish if $new;  
   
         } else {  
                 return $self->result->error( "No results for '$q' in " . $feed->title );  
183          }          }
184    
185          return $items;          return ($items, $new);
186  }  }
187    
188  1;  1;

Legend:
Removed from v.70  
changed lines
  Added in v.71

  ViewVC Help
Powered by ViewVC 1.1.26