Last active
August 20, 2018 14:46
-
-
Save chandeeland/7c6c52b2876f89a8e4a328c584cee712 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'uri' | |
require 'net/http' | |
require 'json' | |
require 'pry' | |
class Brandibble | |
def initialize(env) | |
@env = env | |
end | |
def run | |
binding.pry | |
# order(:bite) | |
# order(:bite) | |
# order(:brandibble) | |
# order(:bite) | |
end | |
# menu item maker | |
# id = '5ad975204a83e70007d8f955' | |
def item(id) | |
mi = Platform::MenuItem.find(id) | |
v = mi.variations.sample | |
{ | |
menu_item_id: mi.id, | |
note: "#{mi.name} #{v.name}", | |
quantity: 1, | |
variation_id: v.id, | |
modifiers: mi.modifier_groups.map(&:modifiers).flatten.map(&:id) | |
} | |
end | |
private | |
attr_reader :env | |
def tokens | |
bodies = { | |
numpang: { | |
bite: "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"grant_type\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"password\"\r\n\r\ngBAfWaku3H8P37fE\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"client_id\"\r\n\r\n8c114d5b42167e8256f3dfbe31fc7d83e83da4a4944a33d29879d062e3a127d2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"client_secret\"\r\n\r\n0a3dd7907581f79cbd0d7311a5b5ce099e581eaeaec869f8ac0e35fa26a8e623\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"username\"\r\n\r\[email protected]\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", | |
brandibble: "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"grant_type\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"password\"\r\n\r\nenhcMqmntKmJ78M3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"username\"\r\n\r\[email protected]\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"client_id\"\r\n\r\n8618a193b69deff2880e7f4bec960ab485ec4e64f3c859be2e3e12e1f3212290\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"client_secret\"\r\n\r\n0092b8ac0bf45202d223124ca7ba4d2d5e084f2fe8eb9ff2b54ed4bf0453ed84\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--" | |
}, | |
sbx: { | |
bite: "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"grant_type\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"password\"\r\n\r\nlovebite\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"client_id\"\r\n\r\nf33d9b18a1bf97ed0359e4aa97190ee5be57097e0040642fc04cf911658939df\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"client_secret\"\r\n\r\n6fd4161ec6a4740a8031253bfb2411491ad3c9895b0ea5332eb6c824a001262a\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"username\"\r\n\r\[email protected]\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", | |
brandibble: "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"grant_type\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"password\"\r\n\r\nsalidosbx\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"username\"\r\n\r\[email protected]\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"client_id\"\r\n\r\na9bdc06ff00c341500f383dfc052c1dac95af6ce9d5817b116f37106bf09dee5\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"client_secret\"\r\n\r\n10e22850907fd29c4ea10830ca8e95d7aa0b538aea87a128a5f61155fdaf6f22\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--" | |
}, | |
prod: { | |
bite: "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"grant_type\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"client_id\"\r\n\r\n8c114d5b42167e8256f3dfbe31fc7d83e83da4a4944a33d29879d062e3a127d2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"client_secret\"\r\n\r\n0a3dd7907581f79cbd0d7311a5b5ce099e581eaeaec869f8ac0e35fa26a8e623\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"username\"\r\n\r\[email protected]\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"password\"\r\n\r\nsalido123\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", | |
brandibble: "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"grant_type\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"username\"\r\n\r\[email protected]\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"client_id\"\r\n\r\n8618a193b69deff2880e7f4bec960ab485ec4e64f3c859be2e3e12e1f3212290\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"client_secret\"\r\n\r\n0092b8ac0bf45202d223124ca7ba4d2d5e084f2fe8eb9ff2b54ed4bf0453ed84\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"password\"\r\n\r\nsalido123\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--" | |
} | |
} | |
@tokens ||= { | |
brandibble: get_token(bodies[env][:brandibble]), | |
bite: get_token(bodies[env][:bite]) | |
} | |
end | |
def token_url | |
return URI("https://ss-gandalf-sbx.herokuapp.com/oauth/token") if env == :sbx | |
URI("https://ss-gandalf-pro.herokuapp.com/oauth/token") | |
end | |
def get_token(body) | |
http = Net::HTTP.new(token_url.host, token_url.port) | |
request = Net::HTTP::Post.new(token_url) | |
request["content-type"] = 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' | |
request["Cache-Control"] = 'no-cache' | |
request.body = body | |
result = Net::HTTP.start(token_url.host, token_url.port, | |
:use_ssl => token_url.scheme == 'https') {|http| http.request(request)} | |
JSON.parse(result.read_body).dig('access_token') | |
end | |
def order_url | |
return URI("https://ss-geoffrey-sbx.herokuapp.com/orders") if env == :sbx | |
URI("https://ss-geoffrey-pro.herokuapp.com/orders") | |
end | |
def order(who) | |
http = Net::HTTP.new(order_url.host, order_url.port) | |
request = Net::HTTP::Post.new(order_url) | |
request["Authorization"] = "Bearer #{tokens[who]}" | |
request["Accept"] = 'application/vnd.api+json' | |
request["Content-Type"] = 'application/vnd.api+json' | |
request["Cache-Control"] = 'no-cache' | |
request["Postman-Token"] = '8682dad9-122c-461c-85af-dc8747c739af' | |
request.body = data(who) | |
res = Net::HTTP.start(order_url.host, order_url.port, | |
:use_ssl => order_url.scheme == 'https') {|http| http.request(request)} | |
puts JSON.parse(res.read_body) | |
res.read_body | |
end | |
def order_items | |
sbx_common = [ | |
{ | |
:menu_item_id => '5ad63d4730c4b90007fff0fa', | |
:note => "Coconut Shrimp Bowl Grain", | |
:quantity => 1, | |
:variation_id => '5ad63d4730c4b90007fff104', | |
:modifiers => [ | |
{ command: '', modifier_id: '5ad6345d30c4b90007fff08c' }, | |
{ modifier_id: '5ad6347551354f0007183749' }, | |
{ command: 'add', modifier_id: '5ad634a951354f000718374a' }, | |
{ command: 'add', modifier_id: '5ad634b351354f000718374b' }, | |
{ command: 'add', modifier_id: '5ad6340151354f0007183746' }, | |
{ command: 'add', modifier_id: '5ad6354430c4b90007fff090' }, | |
{ command: 'add', modifier_id: '5ad6355051354f000718374f' } | |
].sample(2) | |
}, | |
{:menu_item_id=>"5ad619e230c4b90007ffef90", :note=>"Cambodian Iced Coffee", :quantity=>1, :variation_id=>"5ad619e230c4b90007ffef94", modifiers: []}, | |
{:menu_item_id=>"5ad975204a83e70007d8f955", :note=>"Cherry Soda", :quantity=>1, :variation_id=>"5ad975204a83e70007d8f95a"}, | |
{:menu_item_id=>"5ad61b3130c4b90007ffefa2", :note=>"Roasted Chicken \"Chimi\" Bowl", :quantity=>1, :variation_id=>"5ad61b3130c4b90007ffefac"} | |
] | |
prod_common = [ | |
{:menu_item_id=>"5b69ad0bd325040034726f1c", :note=>"Cherry Soda Regular", :quantity=>1, :variation_id=>"5b69ad0bd325040034726f1e", | |
:modifiers=>[ | |
{command: 'add', modifier_id: "55f049bfdcaf9d0018000014"}, | |
{command: 'add', modifier_id: "577ec3370b8dd60009000a94"}, | |
{command: 'add', modifier_id: "577ec32056868400090000d3"}, | |
{command: 'add', modifier_id: "577ec32056868400090000d3"}, | |
{command: 'add', modifier_id: "55f049bfdcaf9d0018000014"}, | |
{command: 'add', modifier_id: "577ec3370b8dd60009000a94"}, | |
{command: 'add', modifier_id: "579f81eb71eed80009000604"}, | |
].sample(3)}, | |
{:menu_item_id=>"5b69adb558eae60060e3779e", :note=>"Roasted Chicken \"Chimi\" Bowl Grain", :quantity=>1, :variation_id=>"5b69adb558eae60060e377a7", :modifiers=>[]} | |
] | |
numpang_common = [ | |
{:menu_item_id=>"56286ca33b72a5000a000120", | |
:note=>"Cherry Soda Regular", | |
:quantity=>1, | |
:variation_id=>"56286ca43b72a5000a000122", | |
:modifiers=>[] | |
}, | |
# {:menu_item_id=>"56286ca03b72a5000a000114", | |
# :note=>"Cambodian Iced Coffee Regular", | |
# :quantity=>1, | |
# :variation_id=>"56286ca13b72a5000a000116", | |
# :modifiers=>[] | |
# }, | |
{:menu_item_id=>"56286c8e3b72a5000a00004d", | |
:note=>"Coconut Tiger Shrimp Regular", | |
:quantity=>1, | |
:variation_id=>"56286c8e3b72a5000a00004f", | |
:modifiers=>[ | |
{command: 'add', modifier_id: "5adf7c7821aa7a00320bee05"}, | |
{command: 'add', modifier_id: "5adf7c7e8b94d0003ac5bd03"}, | |
{command: 'add', modifier_id: "5adf7c878b94d0003ec5bcff"}, | |
{command: 'add', modifier_id: "5adf7c8e21aa7a00360bee51"}, | |
{command: 'add', modifier_id: "5adf7d808b94d0003ac5bd19"}, | |
{command: 'add', modifier_id: "5adf7d218b94d00036c5bc42"}, | |
{command: 'add', modifier_id: "5adf7d2bb934f3003eb7268b"}, | |
{command: 'add', modifier_id: "5adf7d338b94d0003ac5bd10"}, | |
].sample(2) | |
}, | |
# {:menu_item_id=>"581a2e047f44730009000b67", | |
# :note=>"Coconut Tiger Shrimp Bowl Grain LG", | |
# :quantity=>1, | |
# :variation_id=>"58e5627093eb2b000600048e", | |
# :modifiers=>[ | |
# {command: 'add', modifier_id: "5adf7cba8b94d00036c5bc3b"}, | |
# {command: 'add', modifier_id: "5adf7d6f21aa7a00360bee5b"}, | |
# {command: 'add', modifier_id: "5adf7d758b94d00032c5bc08"}, | |
# {command: 'add', modifier_id: "5adf7d7a8b94d0003ec5bd0e"}, | |
# {command: 'add', modifier_id: "5adf7d808b94d0003ac5bd19"}, | |
# {command: 'add', modifier_id: "5adf7d2bb934f3003eb7268b"}, | |
# {command: 'add', modifier_id: "5adf7d2621aa7a00320bee0a"}, | |
# {command: 'add', modifier_id: "5adf7d0eb934f30042b7261d"}, | |
# {command: 'add', modifier_id: "5adf7d9221aa7a00420beef3"}, | |
# {command: 'add', modifier_id: "5adf7d088b94d00032c5bc02"}, | |
# {command: 'add', modifier_id: "5adf7cc721aa7a003a0bef71"}, | |
# {command: 'add', modifier_id: "5adf7d3821aa7a00360bee56"}, | |
# {command: 'add', modifier_id: "5adf7d3d21aa7a003a0bef7a"} | |
# ].sample(2) | |
# }, | |
{:menu_item_id=>"5a6913c2139c2b000e13e1f2", | |
:note=>"Duroc Pulled Pork Bowl White", | |
:quantity=>1, | |
:variation_id=>"5a6913c2139c2b000e13e1f4", | |
:modifiers=>[ | |
{command: 'add', modifier_id: "5adf7d0eb934f30042b7261d"}, | |
{command: 'add', modifier_id: "5adf7d9221aa7a00420beef3"}, | |
{command: 'add', modifier_id: "5adf7cc721aa7a003a0bef71"}, | |
{command: 'add', modifier_id: "5adf7d088b94d00032c5bc02"}, | |
{command: 'add', modifier_id: "5adf7cba8b94d00036c5bc3b"}, | |
{command: 'add', modifier_id: "5adf7d6f21aa7a00360bee5b"}, | |
{command: 'add', modifier_id: "5adf7d758b94d00032c5bc08"}, | |
{command: 'add', modifier_id: "5adf7d7a8b94d0003ec5bd0e"}, | |
{command: 'add', modifier_id: "5adf7d2621aa7a00320bee0a"}, | |
{command: 'add', modifier_id: "5adf7d2bb934f3003eb7268b"}, | |
{command: 'add', modifier_id: "5adf7d3821aa7a00360bee56"}, | |
{command: 'add', modifier_id: "5adf7d648b94d0005ec5bdbb"} | |
].sample(2) | |
} | |
] | |
{ | |
numpang: { | |
brandibble: numpang_common, | |
bite: numpang_common | |
}, | |
prod: { | |
brandibble: prod_common, | |
bite: prod_common | |
}, | |
sbx: { | |
brandibble: sbx_common, | |
bite: sbx_common + [ | |
{:menu_item_id=>"5ad60fcf30c4b90007ffed72", :note=>"Hot & Sour Chicken + Rice Soup", :quantity=>1, :variation_id=>"5ad60fd030c4b90007ffed7a"} | |
] | |
} | |
} | |
end | |
def revenue_centers | |
{ | |
numpang: { | |
bite: '5aeb8c8b4861050054b07783', | |
brandibble: '5aeb8cb5486105005fb0775c' | |
}, | |
prod: { | |
bite: '5b69c4a5946f1b0038b4932f', | |
brandibble: '5b69c521d325040040727046' | |
}, | |
sbx: { | |
bite: '5ad624c751354f00071836ed', | |
brandibble: '5ad91bda4c79970007f6b43b' | |
} | |
} | |
end | |
def order_types | |
{ | |
numpang: { | |
bite: '5aebac84541574003a87cf0f', | |
brandibble: '59ba8e213dc288000ad9ac35' | |
}, | |
prod: { | |
bite: '5b69aa5058eae60060e3778d', | |
brandibble: '5b69aa5cd32504003c726ed0' | |
}, | |
sbx: { | |
bite: '5ad60cca30c4b90007ffecf3', | |
brandibble: '5aa3040d4d7a0a00071a2672' | |
} | |
} | |
end | |
def discount_rule | |
{ | |
numpang: '5b02ece0e70869003a16e243', | |
prod: '5b69acbe946f1b0034b49351', | |
sbx: '5aa30e1101e9de000718f849' | |
} | |
end | |
def data(who) | |
JSON.unparse({ | |
"data": { | |
"attributes": { | |
"guests": [ | |
{ | |
"email": "[email protected]", | |
"external_id": "100:#{Time.now.to_i}", | |
"first_name": "david", | |
"gender": "M", | |
"last_name": "chan", | |
"phone": "8005551212" | |
} | |
], | |
"order_items": order_items[env][who].sample(2), | |
"order_type_id": order_types[env][who], | |
"revenue_center_id": revenue_centers[env][who], | |
"tip_amount": 10.0, | |
"external_id": "1234:#{Time.now.to_i}", | |
"discounts": [ | |
{ | |
"discount_rule_id": discount_rule[env], | |
"value": 100, | |
"note": "$1 open discount" | |
} | |
] | |
}, | |
"type": "orders" | |
} | |
}) | |
end | |
end | |
Brandibble.new(:prod).run |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment