class ProductWars::Client
Public Class Methods
all_wars(params="")
click to toggle source
# File lib/productwars/client.rb, line 44 def self.all_wars(params="") get("/wars.json#{params}") end
dispatch(method, *args, &block)
click to toggle source
# File lib/productwars/client.rb, line 17 def self.dispatch(method, *args, &block) base_uri "#{ProductWars.domain}/api/v1" if args.count == 1 and args[0].class == Hash args[0] = parse_params(args[0]) elsif args.count == 2 and args[1].class == Hash args[1] = parse_params(args[1]) end response = self.send(method, *args, &block) self.handle(response) end
global_leaders(params="")
click to toggle source
# File lib/productwars/client.rb, line 60 def self.global_leaders(params="") get("/leaders.json#{params}") end
handle(response)
click to toggle source
# File lib/productwars/client.rb, line 69 def self.handle(response) if response.response.code.to_i == 404 raise ProductWars::Errors::NotFound else self.wrap(response) end end
leaders_in_war(war_id, params="")
click to toggle source
# File lib/productwars/client.rb, line 64 def self.leaders_in_war(war_id, params="") get("/wars/#{war_id}/leaders.json#{params}") end
new_product_wars_object(info)
click to toggle source
# File lib/productwars/client.rb, line 136 def self.new_product_wars_object(info) type = product_wars_type?(info) if type == ProductWars::Product ProductWars::Product.new(info) elsif type == ProductWars::War ProductWars::War.new(info) elsif type == ProductWars::Stats ProductWars::Stats.new(info) else nil end end
parse_params(params_hash)
click to toggle source
# File lib/productwars/client.rb, line 150 def self.parse_params(params_hash) if not params_hash.class == Hash return "" end param_string = "?" for k, v in params_hash param_string = param_string + "#{k.to_s}=#{v}&" end return param_string end
product(product_id, params="")
click to toggle source
# File lib/productwars/client.rb, line 36 def self.product(product_id, params="") get("/products/#{product_id}.json#{params}") end
product_stats(product_id, params="")
click to toggle source
# File lib/productwars/client.rb, line 48 def self.product_stats(product_id, params="") get("/stats/products/#{product_id}.json#{params}") end
product_wars_type?(obj)
click to toggle source
# File lib/productwars/client.rb, line 118 def self.product_wars_type?(obj) if obj.nil? return nil end if obj.class == Hash if obj.has_key?("dp_id") if obj.has_key?("win_rate") ProductWars::Stats else ProductWars::Product end else ProductWars::War end end end
products(params="")
click to toggle source
API Calls ###########
# File lib/productwars/client.rb, line 32 def self.products(params="") get("/products.json#{params}") end
products_in_war(war_id, params="")
click to toggle source
# File lib/productwars/client.rb, line 56 def self.products_in_war(war_id, params="") get("/wars/#{war_id}/products.json#{params}") end
war(war_id, params="")
click to toggle source
# File lib/productwars/client.rb, line 52 def self.war(war_id, params="") get("/wars/#{war_id}.json#{params}") end
wars_containing_product(product_id, params="")
click to toggle source
# File lib/productwars/client.rb, line 40 def self.wars_containing_product(product_id, params="") get("/products/#{product_id}/wars.json#{params}") end
wrap(response)
click to toggle source
# File lib/productwars/client.rb, line 77 def self.wrap(response) info = response.parsed_response items = [] sym = nil if info.has_key?("products") sym = "products" items = info[sym] elsif info.has_key?("wars") sym = "wars" items = info[sym] end if items.count > 0 a = [] for hash in items a.push(new_product_wars_object(hash)) end info[sym] = a return info elsif info.class == Hash return new_product_wars_object(info) end #if info.class == Array # a = [] # for hash in info # a.push(new_product_wars_object(hash)) # end # return a #elsif info.class == Hash # new_product_wars_object(info) #end end