class FanforceApp::Sinatra # INDEX ######################################################################## def route_index(params) page :index, :layout => :promotional end ['/', '/index.html'].each do |path| get path do route_index(params) end end # INSTALL ###################################################################### def route_install(params) raise "This is not a valid app install request: #{env['HTTP_HOST']}" if !ff.valid_install_request?(params) api_key = $Redis.get("installed:#{ff.params[:addon_type]}-#{ff.params[:addon_id]}:#{ff.params[:organization_id]}") #raise 'A different API key already exists for this addon. Please uninstall first.' if api_key.present? and ff.params[:api_key] != api_key $Redis.set("installed:#{ff.params[:addon_type]}-#{ff.params[:addon_id]}:#{ff.params[:organization_id]}", ff.params[:api_key]) ff.auth(ff.params[:api_key]) json status: 'finished-processing' end any '/install' do route_install(params) end # UNINSTALL #################################################################### def route_uninstall(params) raise 'This is not a valid app uninstall request.' if !ff.valid_uninstall_request?(params) api_key = $Redis.get("installed:#{ff.params[:addon_type]}-#{ff.params[:addon_id]}:#{ff.params[:organization_id]}") raise 'API keys must match before an addon can be uninstalled.' if api_key.present? and ff.params[:api_key] != api_key $Redis.del("installed:#{ff.params[:addon_type]}-#{ff.params[:addon_id]}:#{ff.params[:organization_id]}") json status: 'finished-processing' end any '/uninstall' do route_uninstall(params) end # DASHBOARD #################################################################### def route_dashboard(params) page :dashboard, :layout => :dashboard end get '/dashboard.html' do route_dashboard(params) end # PING-PONG #################################################################### def route_ping_pong(params) json success: true end get '/ping-pong' do route_ping_pong(params) end end