class Gogcom::Sale
Public Class Methods
new(options)
click to toggle source
# File lib/gogcom/sale.rb, line 4 def initialize(options) @type = options[:type] || nil @limit = options[:limit] || nil end
Public Instance Methods
get()
click to toggle source
Main method to get sales data.
# File lib/gogcom/sale.rb, line 10 def get() parse(fetch()) end
Private Instance Methods
fetch()
click to toggle source
Fetches raw data from source.
@return [Object]
# File lib/gogcom/sale.rb, line 19 def fetch() url = "http://www.gog.com/" page = Net::HTTP.get(URI(url)) @data = JSON.parse(page[/(?<=var gogData = )(.*)(?=;)/,1]) end
get_current_price(data)
click to toggle source
# File lib/gogcom/sale.rb, line 60 def get_current_price(data) data["price"]["symbol"] + data["price"]["amount"] end
get_discount_amount(data)
click to toggle source
# File lib/gogcom/sale.rb, line 72 def get_discount_amount(data) data["price"]["symbol"] + data["price"]["discountDifference"] end
get_discount_percentage(data)
click to toggle source
# File lib/gogcom/sale.rb, line 68 def get_discount_percentage(data) data["price"]["discountPercentage"] end
get_original_price(data)
click to toggle source
# File lib/gogcom/sale.rb, line 64 def get_original_price(data) data["price"]["symbol"] + data["price"]["baseAmount"] end
get_title(data)
click to toggle source
# File lib/gogcom/sale.rb, line 56 def get_title(data) data["title"] end
is_game?(data)
click to toggle source
# File lib/gogcom/sale.rb, line 76 def is_game?(data) data["isGame"] end
is_movie?(data)
click to toggle source
# File lib/gogcom/sale.rb, line 80 def is_movie?(data) data["isMovie"] end
parse(data)
click to toggle source
Parses raw data and returns sale items.
@return [Array]
# File lib/gogcom/sale.rb, line 28 def parse(data) items = [] data["on_sale"].each do |item| sale_item = SaleItem.new(get_title(item), get_current_price(item), get_original_price(item), get_discount_percentage(item), get_discount_amount(item)) if @type.nil? items.push(sale_item) else if (@type == "games" && is_game?(item)) items.push(sale_item) end if (@type == "movies" && is_movie?(item)) items.push(sale_item) end end end unless @limit.nil? items.take(@limit) else items end end