Class: Desuraify::Game

Inherits:
Base
  • Object
show all
Defined in:
lib/desuraify/game.rb

Constant Summary collapse

ATTRIBUTES =
[
  :boxshot, :developers, :engines, :expansion, :genres, :html, 
  :images_count, :images, :languages, :news, :news_count, :official_page, 
  :original_price, :page_title, :platforms, :players, :price, :projects, 
  :publishers, :rank, :rating, :reviews, :summary, :themes, :title, 
  :updated, :videos, :videos_count, :visits, :watchers
]

Instance Attribute Summary

Attributes inherited from Base

#callback, #error, #hydra, #id

Instance Method Summary collapse

Methods inherited from Base

#enqueue_update, #parse_headers, #parse_similar, #rss_update, #update

Constructor Details

#initialize(id, options = {}) ⇒ Game



14
15
16
# File 'lib/desuraify/game.rb', line 14

def initialize(id, options={})
  super(id, options)
end

Instance Method Details

#attributesObject



40
41
42
# File 'lib/desuraify/game.rb', line 40

def attributes
  ATTRIBUTES
end

#parse(html) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/desuraify/game.rb', line 18

def parse(html) 
  doc = Nokogiri::HTML(html)

  result = parse_headers(doc.css('h5'))
  result.merge!(parse_similar(doc, result[:image_count], result[:video_count]))

  # acquire prices
  prices = doc.css('.price').children.select{ |price| price unless price.text.strip.empty? }.map{ |price| price.text.strip } rescue nil

  result[:price] = prices.min unless prices.empty? rescue nil
  result[:original_price] = prices.max unless prices.empty? rescue nil

  result[:publishers] = result[:developers].map{ |dev| dev.dup } unless result[:publishers] if result[:developers]
  result[:html] = html

  result
end

#to_sObject



44
45
46
# File 'lib/desuraify/game.rb', line 44

def to_s
  "#{@title} for #{@platforms.join(', ')}" rescue "#{self.class}::#{self.object_id}"
end

#urlObject



36
37
38
# File 'lib/desuraify/game.rb', line 36

def url
  "http://www.desura.com/games/#{@id}"
end