lib/trebbianno/client.rb in trebbianno-ruby-api-0.0.2 vs lib/trebbianno/client.rb in trebbianno-ruby-api-0.0.3
- old
+ new
@@ -5,10 +5,11 @@
class Client
TEST_HOST = "54.235.241.72"
LIVE_HOST = "54.235.241.72"
PORT = 4081
+ KEYS_MAP = { "stockid" => "upc" }
attr_accessor :username, :password, :response, :type, :request_uri, :path
def initialize(username, password, options = {})
raise "Username is required" unless username
@@ -26,26 +27,26 @@
end
def get_inventory
request = Inventory.new(self).build_inventory_request
@path = Inventory::PATH
- post(request).response['stock']
+ map_results(post(request).response['stock'])
end
def order_request(order)
@path = Order::PATH
Order.new(self).build_order_request(order)
end
def upcs(inventory)
- inventory.collect { |s| s["stockid"][0] }
+ inventory.collect { |s| s["upc"] }
end
def mapped_inventory(upcs, inventory)
inventory.collect do |stock|
- if upcs.include?(stock["stockid"][0])
- { quantity: stock["qty"][0].to_i }
+ if upcs.include?(stock["upc"])
+ { quantity: stock["qty"].to_i }
end
end.compact
end
def request_uri
@@ -95,9 +96,26 @@
end
def parse_response(xml_response)
log(xml_response)
@response = Response.new(xml_response, @type)
+ end
+
+ def map_results(results)
+ results = flatten_results(results)
+ results.map do |h|
+ h = h.inject({ }) { |x, (k,v)| x[map_keys(k)] = v; x }
+ end
+ end
+
+ def flatten_results(results)
+ @flattened ||= results.map do |h|
+ h.each { |k,v| h[k] = v[0] }
+ end
+ end
+
+ def map_keys(key)
+ KEYS_MAP[key] || key
end
end
end