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