Skip to content

Instantly share code, notes, and snippets.

@cndreisbach
Created August 15, 2014 01:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cndreisbach/032d7791bdd09c8cd498 to your computer and use it in GitHub Desktop.
Save cndreisbach/032d7791bdd09c8cd498 to your computer and use it in GitHub Desktop.
burger-feed
require "rubygems"
require "bundler/setup"
require 'google_spreadsheet'
require 'sinatra'
require 'atom'
require 'rss/maker'
class Burger
attr_reader :name, :score, :link, :cows
def initialize(_, name, _, score, link, _, cows, *other)
@name = name
@score = score.to_i
@link = link
@cows = cows.to_i
end
end
def get_worksheet
session = GoogleSpreadsheet.login("crnixon@gmail.com", ENV['GPASS'])
ws_key = "0ArFd48EOGjiDdHpGSTdUNzhZT244NzNETUREb3MzcVE"
session.spreadsheet_by_key(ws_key).worksheets[0]
end
def get_burgers
num_burgers = 5
burgers = []
ws = get_worksheet
rows = ws.rows
rows.slice(1, num_burgers).each do |row|
burgers << Burger.new(*row)
end
burgers
end
get '/:whatevs.rss' do
burgers = get_burgers
rss = RSS::Maker.make("2.0") do |r|
r.channel.title = "Top #{burgers.count} Ranked Burgers"
r.channel.link = "http://durhamburger.com"
r.channel.description = "Durham burgers as rated by Crystal"
burgers.each do |burger|
i = r.items.new_item
i.title = "#{burger.name} - #{burger.score}%"
i.link = burger.link
i.date = Time.now
end
end
content_type "application/rss+xml"
rss.to_s
end
get '/:whatevs.atom' do
burgers = get_burgers
feed = Atom::Feed.new do |f|
f.title = "Top #{burgers.count} Ranked Burgers"
f.links << Atom::Link.new(:href => "http://durhamburger.com")
f.updated = Time.now
burgers.each do |burger|
f.entries << Atom::Entry.new do |e|
e.title = "#{burger.name} - #{burger.score}%"
e.id = burger.link
e.links << Atom::Link.new(:href => burger.link)
e.updated = Time.now
e.summary = burger.link
end
end
end
content_type "application/atom+xml"
feed.to_xml
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment