Hyperfeed

This gem turns RSS Feeds into ruby objects. It is a HttpMonkey middleware wich parse the feeds xml dynamically and create a hash from the given attributes.

As a gift for you this hash is Methodized, in other words, you can read the hash attributes as object methods.

*Note: currently supports only RSS feeds type (someone wants to code a Atom support???) and we let you to use feeds thats has more than W3C attributes on the content.

Installation

Add this line to your application's Gemfile:

gem 'hyperfeed'

And then execute:

$ bundle

Or install it yourself as:

$ gem install hyperfeed

Usage

  ##################
  # Accessing the feed

  response = Hyperfeed::Client.at("http://fakefeed/articles.rss").get

  puts response.inspect
  => {:per_page=>10, :current_page=>1, :total_pages=>1, :total_results=>5, :result=>[ ]...

  ##############
  # Reading items:

  item = response.result.first #enclosure(media) included

  puts item.inspect
  => {:id=>"83a84dd1481a1d8bdbc427cac2eba403", 
   :guid=>"http://fakefeed/article-1.html", 
   :title=>"Fake Title", :category=>"fake category", :description=>"Lorem ipsum dolor sit amet", 
   :link=>"http://fakefeed/article-1.html", :source=>"Fake feed", 
   :enclosure=>[{:url=>"http://fakefeed/image-1.jpg", 
                 :type=>"image/jpeg", :title=>"Image"}]}

  puts item.guid
  => "http://fakefeed/article-1.html"

  puts item.id #This ID is generated by hyperfeed and you can use it to access the exact item
  => "83a84dd1481a1d8bdbc427cac2eba403"

  item = Hyperfeed::Client.at("http://fakefeed/articles.rss").get("83a84dd1481a1d8bdbc427cac2eba403")
  puts item.title
  => "Fake Title"

  #############
  # Pagination

  response = Hyperfeed::Client.at("http://fakefeed/articles.rss", {:per_page => 20, :page => 2}).get

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request