Skip to content

Instantly share code, notes, and snippets.

@Zhong-z
Last active October 18, 2018 01:42
Show Gist options
  • Save Zhong-z/9f26823aba80797f3a0b747cd3555abb to your computer and use it in GitHub Desktop.
Save Zhong-z/9f26823aba80797f3a0b747cd3555abb to your computer and use it in GitHub Desktop.
Bulk order creation with suggested addression response
require 'httparty'
require 'json'
country = 'ph'
tests = File.read("/Users/zz/Downloads/#{country}.json")
csv = CSV.open("/Users/zz/downloads/#{country}_final_#{Time.now.to_i}.csv", 'w')
csv << %w[index response_code suggested_or_not suggest_address delivery_suburb delivery_postcode raw_request raw_response]
orders = JSON.parse(tests)
succeed = 0
failed_with_suggestion = 0
completed_failed = 0
orders.each.with_index(1) do |order, index|
delivery_suburb = order.dig('order', 'delivery_suburb')
delivery_postcode = order.dig('order', 'delivery_postcode')
response = HTTParty.post('http://localhost:3000/api/3/orders?auth_token=x',
body: order.to_json, headers: { 'Content-Type' => 'application/json' })
case response.code
when 200
csv << [index, response.code, nil, nil, nil, nil, order.to_json, response.body]
succeed += 1
when 422
has_address = response.parsed_response.fetch('suggested_address')
if has_address
failed_with_suggestion += 1
csv << [index, response.code, true, has_address.to_s, delivery_suburb, delivery_postcode,order.to_json, response.body]
else
completed_failed += 1
csv << [index, response.code, false, nil, delivery_suburb, delivery_postcode,order.to_json, response.body]
end
else
csv << [index, response.code, nil, nil, nil, nil, order.to_json, response.body]
puts "completed failed with #{response.code}"
end
puts "Finished #{index} request"
end
csv.close
puts '*' * 100
puts "succeed #{succeed}"
puts "failed with suggestion #{failed_with_suggestion}"
puts "completed_failed #{completed_failed}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment