Class: Mkmapi::Marketplace

Inherits:
Struct
  • Object
show all
Defined in:
lib/mkmapi/marketplace.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#agentObject

Returns the value of attribute agent

Returns:

  • (Object)

    the current value of agent



7
8
9
# File 'lib/mkmapi/marketplace.rb', line 7

def agent
  @agent
end

Instance Method Details

#card_by_name(name, game_id = 1, language_id = 1) ⇒ Object



66
67
68
69
70
71
72
73
# File 'lib/mkmapi/marketplace.rb', line 66

def card_by_name(name, game_id = 1, language_id = 1)
  # Sanitize name: remove special chars, downcase, and properly encode spaces
  sanitized_name = name.gsub(/['"]/, '')  # Remove quotes
                      .strip              # Remove leading/trailing whitespace
                      .downcase           # Convert to lowercase
  encoded_name = CGI.escape(sanitized_name).gsub('+', '%20')
  agent.get("products/#{encoded_name}/#{game_id}/#{language_id}/true")["product"]
end

#expansions(game_id = 1) ⇒ Object



48
49
50
51
# File 'lib/mkmapi/marketplace.rb', line 48

def expansions(game_id = 1)
  agent.get("games/#{game_id}/expansions")["expansion"].
    each { |g| g["id"] = g.delete("idExpansion") }
end

#gamesObject



57
58
59
60
# File 'lib/mkmapi/marketplace.rb', line 57

def games
  agent.get("games")["game"].
    each { |g| g["id"] = g.delete("idGame") }
end

#priceguide(game_id = 1) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/mkmapi/marketplace.rb', line 8

def priceguide(game_id = 1)
  json_data = agent.get("priceguide", { "idGame" => game_id })

  if (json_data && json_data["priceguidefile"])
    data = Base64.decode64(json_data["priceguidefile"])
    gzip = Zlib::GzipReader.new(StringIO.new(data))

    keys = ["id", "average", "low", "trend", "german_low", "suggested", "foil", "foil_low", "foil_trend", "low_ex", "avg1", "avg7", "avg30", "foilavg1", "foilavg7", "foilavg30"]
    skip_first = gzip.readline # Skip the header

    CSV.parse(gzip.read).map do |a|
      item = keys.zip(a.map(&:to_f))
      item[0][1] = item[0][1].to_i

      Hash[item]
    end
  end
end

#product(product_id) ⇒ Object



62
63
64
# File 'lib/mkmapi/marketplace.rb', line 62

def product(product_id)
  agent.get("products/#{product_id}")["product"]
end

#productlistObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/mkmapi/marketplace.rb', line 27

def productlist
  json_data = agent.get("productlist")

  if (json_data && json_data["productsfile"])
    data = Base64.decode64(json_data["productsfile"])
    gzip = Zlib::GzipReader.new(StringIO.new(data))

    keys = ["id", "name", "category_id", "category", "expansion_id", "date_added"]
    skip_first = gzip.readline # Skip the header

    CSV.parse(gzip.read).map do |a|
      item = keys.zip(a)
      item[0][1] = item[0][1].to_i
      item[2][1] = item[2][1].to_i
      item[4][1] = item[4][1].to_i
      item[5][1] = item[5][1].to_i
      Hash[item]
    end
  end
end

#search(name, game_id = 1, language_id = 1) ⇒ Object



75
76
77
78
79
80
81
# File 'lib/mkmapi/marketplace.rb', line 75

def search(name, game_id = 1, language_id = 1)
  sanitized_name = name.gsub(/['"]/, '')
                      .strip
                      .downcase
  encoded_name = CGI.escape(sanitized_name).gsub('+', '%20')
  agent.get("products/#{encoded_name}/#{game_id}/#{language_id}/false")["product"]
end

#singles(expansion_id = 1) ⇒ Object



53
54
55
# File 'lib/mkmapi/marketplace.rb', line 53

def singles(expansion_id = 1)
  agent.get("expansions/#{expansion_id}/singles")
end