class HackerNew

Constants

JSON_FORMAT
URL

Public Class Methods

new_stories(num = 5) click to toggle source
# File lib/hack3rnews.rb, line 10
def new_stories(num = 5)
  stories('newstories', num)
end
story_comments(story_id) click to toggle source
# File lib/hack3rnews.rb, line 23
def story_comments(story_id)
  story = item('item', story_id)
  items(story['kids'] || [])
end
top_job_stories(num = 5) click to toggle source
# File lib/hack3rnews.rb, line 28
def top_job_stories(num = 5)
  top_items(stories('jobstories'), 'score').last(num)
end
top_stories(num = 5) click to toggle source
# File lib/hack3rnews.rb, line 14
def top_stories(num = 5)
  stories('topstories', num)
end
user_stories(user_id, num = 5) click to toggle source
# File lib/hack3rnews.rb, line 18
def user_stories(user_id, num = 5)
  user = item('user', user_id)
  items(user['submitted'].first(num) || [])
end

Private Class Methods

item(type, item_id) click to toggle source
# File lib/hack3rnews.rb, line 47
def item(type, item_id)
  request.item(url(type, item_id))
end
items(item_ids) click to toggle source
# File lib/hack3rnews.rb, line 43
def items(item_ids)
  item_ids.map {|item_id| item('item', item_id)}
end
request() click to toggle source
# File lib/hack3rnews.rb, line 56
def request
  @@request
end
stories(type, num = nil) click to toggle source
# File lib/hack3rnews.rb, line 33
def stories(type, num = nil)
  story_ids = request.item(url(type))
  story_ids = story_ids.first(num) if num
  items(story_ids)
end
top_items(items, field) click to toggle source
# File lib/hack3rnews.rb, line 39
def top_items(items, field)
  items.sort_by! { |hsh| hsh[field] }.reverse
end
url(type, id = nil) click to toggle source
# File lib/hack3rnews.rb, line 51
def url(type, id = nil)
  return URL + type + '/' + id.to_s + JSON_FORMAT if id
  URL + type + JSON_FORMAT
end