require 'sinatra/shopify-sinatra-app' class SinatraApp < Sinatra::Base register Sinatra::Shopify # set the scope that your app needs, read more here: # http://docs.shopify.com/api/tutorials/oauth set :scope, 'read_products, read_orders' # Your App's Home page # this is a simple example that fetches some products # from Shopify and displays them inside your app get '/' do shopify_session do @products = ShopifyAPI::Product.all erb :home end end # this endpoint recieves the uninstall webhook # and cleans up data, add to this endpoint as your app # stores more data. post '/uninstall' do webhook_session do |params| shop.destroy end end private # This method gets called when your app is installed. # setup any webhooks or services you need on Shopify # inside here. def install shopify_session do params = YAML.load(File.read("config/app.yml")) # create an uninstall webhook, this webhook gets sent # when your app is uninstalled from a shop. It is good # practice to clean up any data from a shop when they # uninstall your app. uninstall_webhook = ShopifyAPI::Webhook.new({ topic: "app/uninstalled", address: "#{base_url}/uninstall", format: "json" }) uninstall_webhook.save end redirect '/' end end