--- lib/Grep/Action/Fetch.pm 2007/02/17 18:06:42 5 +++ lib/Grep/Action/Fetch.pm 2007/02/17 21:22:17 7 @@ -24,7 +24,7 @@ param feed => label is 'From feed', - render as 'combobox', + render as 'select', available are defer { my $feeds = Grep::Model::FeedCollection->new; $feeds->order_by({ column => 'title', order => 'ASC' }); @@ -63,12 +63,21 @@ return 0; } - Jifty->log->info("Fetching ", $feed->title, " from ", $feed->uri); + my $uri = $feed->uri; + if ($uri =~ m/%s/) { + $uri = sprintf( $uri, $self->argument_value('q') ); + Jifty->log->info("Searching ", $feed->title, " at $uri"); + } else { + Jifty->log->info("Fetching ", $feed->title, " at $uri"); + } - my $xml_feed = XML::Feed->parse( URI->new( $feed->uri ) ) + my $xml_feed = XML::Feed->parse( URI->new($uri) ) or die XML::Feed->errstr; warn "fetching ", $xml_feed->title, "\n"; + + my @results; + for my $entry ($xml_feed->entries) { my $i = Grep::Model::Item->new(); @@ -84,12 +93,27 @@ modified => $entry->modified ? $entry->modified->strftime("%Y-%m-%d %H:%M:%S %z") : undef, ); - Jifty->log->debug("entry = ",dump( $entry ) ); + die "can't create item from entry ", dump( $entry ) unless ( $i->id ); + + push @results, $i->id; + + Jifty->log->debug("item ", $i->id, " = ",dump( $entry ) ); } - $self->result->message('Success') if not $self->result->failure; - - return 1; + if ( @results ) { + + $self->result->message( $self->argument_value('q') . ' => ' . + $xml_feed->entries . ' items: ' . join(",", @results) + ); + + $self->result->content( results => \@results ); + return 1; + + } else { + + $self->result->message( 'No results for ' . $self->argument_value('q') ); + return 0; + } } 1;