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 an 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