Skip to content

Instantly share code, notes, and snippets.

@phstc
Last active December 19, 2015 17:08
Show Gist options
  • Save phstc/5988511 to your computer and use it in GitHub Desktop.
Save phstc/5988511 to your computer and use it in GitHub Desktop.
require 'endpoint_base'
require 'multi_json'
class HelloEndpoint < EndpointBase
post '/' do
process_result 200, { 'message_id' => @message[:message_id] }
end
post '/product_existence_check' do
passed_in_name = @message[:payload]['product']['name']
if product_names.include?(passed_in_name)
process_result 200, { 'message_id' => @message[:message_id], 'message' => 'notification:info' }
else
process_result 200, { 'message_id' => @message[:message_id], 'message' => 'notification:warn' }
end
end
post '/query_price' do
passed_in_name = @message[:payload]['product']['name']
if product = products.find { |product| product['name'] == passed_in_name }
## Find the product whose name matches what we're passing.
process_result 200, { 'message_id' => @message[:message_id], 'message' => 'product:in_stock',
'payload' => { 'product' => { 'name' => product['name'], 'price' => product['price'] }}}
else
process_result 200, { 'message_id' => @message[:message_id], 'message' => 'product:not_in_stock' }
end
end
private
def product_names
@product_names ||= products.map { |product| product["name"] }
end
def products
@products ||= JSON.parse(File.read("product_catalog.json"))['products']
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment