From a9f3bcc7fe59a168a104278524fa09fa82192528 Mon Sep 17 00:00:00 2001 From: David Moreno Date: Fri, 5 Mar 2010 20:21:05 -0500 Subject: [PATCH] 0.6 --- ChangeLog | 6 +++++ bin/feedbag | 28 ++++++++++++++++++++++++ feedbag.gemspec | 9 +++++--- lib/feedbag.rb | 58 +++++++++++++++++++++++-------------------------- 4 files changed, 67 insertions(+), 34 deletions(-) create mode 100755 bin/feedbag diff --git a/ChangeLog b/ChangeLog index f7f5cf3..333290d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +* 0.6 - Fri Mar 5 20:10:33 EST 2010 + - Added bin/feedbag. + - Removed the args[:narrow] option, not really needed. + - Handle case where feed URLs contain GET parameters; add tests + by Patrick Reagan . + * 0.5.99 - Tue May 12 12:52:22 EDT 2009 - Added rails/init.rb to load easily on a Rails app. diff --git a/bin/feedbag b/bin/feedbag new file mode 100755 index 0000000..c8e6135 --- /dev/null +++ b/bin/feedbag @@ -0,0 +1,28 @@ +#!/usr/bin/env ruby + +require "rubygems" +require "feedbag" + +def usage + %Q{ + #{$0} [ ... ] + } +end + +if ARGV.empty? + puts usage + exit 1 +end + +ARGV.each do |url| + puts "== #{url}:" + feeds = Feedbag.find url + if feeds.empty? + puts " no feeds found!" + else + feeds.each do |f| + puts " - #{f}" + end + end +end + diff --git a/feedbag.gemspec b/feedbag.gemspec index db7fe8c..f6d18b7 100644 --- a/feedbag.gemspec +++ b/feedbag.gemspec @@ -2,19 +2,22 @@ Gem::Specification.new do |s| s.name = %q{feedbag} - s.version = "0.5.100" + s.version = "0.6" s.homepage = "http://axiombox.com/feedbag" s.rubyforge_project = "feedbag" s.authors = ["Axiombox", "David Moreno"] - s.date = %q{2009-02-10} + s.date = %q{2010-03-05} s.description = %q{Ruby's favorite feed auto-discoverty tool} s.email = %q{david@axiombox.com} s.extra_rdoc_files = ["README.markdown", "COPYING"] - s.files = ["lib/feedbag.rb", "benchmark/rfeedfinder_benchmark.rb"] + s.files = ["lib/feedbag.rb", "benchmark/rfeedfinder_benchmark.rb", "bin/feedbag"] s.has_rdoc = true s.rdoc_options = ["--main", "README.markdown"] s.summary = %q{Ruby's favorite feed auto-discovery tool} s.add_dependency("hpricot", '>= 0.6') + s.bindir = 'bin' + s.default_executable = %q{feedbag} + s.executables = ["feedbag"] end diff --git a/lib/feedbag.rb b/lib/feedbag.rb index 627d1ea..045c585 100644 --- a/lib/feedbag.rb +++ b/lib/feedbag.rb @@ -67,22 +67,20 @@ def self.find(url, args = {}) #url = "#{url_uri.scheme or 'http'}://#{url_uri.host}#{url_uri.path}" # check if feed_valid is avail - unless args[:narrow] - begin - require "feed_validator" - v = W3C::FeedValidator.new - v.validate_url(url) - return self.add_feed(url, nil) if v.valid? - rescue LoadError - # scoo - rescue REXML::ParseException - # usually indicates timeout - # TODO: actually find out timeout. use Terminator? - $stderr.puts "Feed looked like feed but might not have passed validation or timed out" - rescue => ex - $stderr.puts "#{ex.class} error ocurred with: `#{url}': #{ex.message}" - end - end + begin + require "feed_validator" + v = W3C::FeedValidator.new + v.validate_url(url) + return self.add_feed(url, nil) if v.valid? + rescue LoadError + # scoo + rescue REXML::ParseException + # usually indicates timeout + # TODO: actually find out timeout. use Terminator? + # $stderr.puts "Feed looked like feed but might not have passed validation or timed out" + rescue => ex + $stderr.puts "#{ex.class} error ocurred with: `#{url}': #{ex.message}" + end begin html = open(url) do |f| @@ -110,21 +108,19 @@ def self.find(url, args = {}) end end - unless args[:narrow] - (doc/"a").each do |a| - next unless a["href"] - if self.looks_like_feed?(a["href"]) and (a["href"] =~ /\// or a["href"] =~ /#{url_uri.host}/) - self.add_feed(a["href"], url, $base_uri) - end - end - - (doc/"a").each do |a| - next unless a["href"] - if self.looks_like_feed?(a["href"]) - self.add_feed(a["href"], url, $base_uri) - end - end - end + (doc/"a").each do |a| + next unless a["href"] + if self.looks_like_feed?(a["href"]) and (a["href"] =~ /\// or a["href"] =~ /#{url_uri.host}/) + self.add_feed(a["href"], url, $base_uri) + end + end + + (doc/"a").each do |a| + next unless a["href"] + if self.looks_like_feed?(a["href"]) + self.add_feed(a["href"], url, $base_uri) + end + end end rescue Timeout::Error => err