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
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request