Class: FanforceApp::Sinatra

Inherits:
Sinatra::Base
  • Object
show all
Includes:
Fanforce::Errors
Defined in:
lib/fanforce/app_factory/routes_core.rb,
lib/fanforce/app_factory/_init_sinatra.rb,
lib/fanforce/app_factory/routes_behavior.rb,
lib/fanforce/app_factory/routes_connector.rb,
lib/fanforce/app_factory/routes_js_widget.rb,
lib/fanforce/app_factory/routes_identifier.rb,
lib/fanforce/app_factory/routes_broadcaster.rb,
lib/fanforce/app_factory/config/_error_handling.rb

Constant Summary collapse

@@static_files =
{}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.any(url, &block) ⇒ Object



21
22
23
24
25
26
# File 'lib/fanforce/app_factory/_init_sinatra.rb', line 21

def self.any(url,&block)
  get(url, &block)
  put(url, &block)
  post(url, &block)
  delete(url, &block)
end

.default_javascript_package(package_name) ⇒ Object



28
29
30
# File 'lib/fanforce/app_factory/_init_sinatra.rb', line 28

def self.default_javascript_package(package_name)

end

.require_controllersObject



32
33
34
35
# File 'lib/fanforce/app_factory/_init_sinatra.rb', line 32

def self.require_controllers
  require "#{FanforceApp.config.factory_root_dir}/controllers/base_controller"
  Dir["#{FanforceApp.config.root_dir}/controllers/*_controller.rb"].each {|f| require f }
end

.static(url, *args, &block) ⇒ Object



38
39
40
41
# File 'lib/fanforce/app_factory/_init_sinatra.rb', line 38

def self.static(url, *args, &block)
  @@static_files[url] = {args: args, block: block}
  get(url, &block)
end

Instance Method Details

#page(page, options = {}) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/fanforce/app_factory/_init_sinatra.rb', line 43

def page(page, options={})
  gem_dir = Pathname.new(File.expand_path('../', __FILE__))
  app_dir = Pathname.new(File.expand_path('../', settings.views))
  app_views_dir = Pathname.new(settings.views)
  gem_rel_dir = gem_dir.relative_path_from(app_views_dir).to_s
  gem_abs_dir = File.expand_path(gem_rel_dir, app_views_dir)

  if !File.exists?("#{app_dir}/views/#{page}.haml")
    if File.exists?("#{app_dir}/views/#{options[:com_dir]}/#{page}.haml")
      page_path = :"#{options[:com_dir]}/#{page}"
    else
      page_path = :"#{gem_rel_dir}/views/#{page}" if File.exists?("#{gem_abs_dir}/views/#{page}.haml")
    end
  end
  page_path ||= page

  if options[:layout]
    if File.exists?("#{app_dir}/layouts/#{options[:layout]}.haml")
      options[:layout] = :"../layouts/#{options[:layout]}"
    else
      options[:layout] = :"#{gem_rel_dir}/layouts/#{options[:layout]}"
    end
  else
    options[:layout] = false
  end

  haml page_path, options
end

#route_add_initiative_uiObject



3
4
5
# File 'lib/fanforce/app_factory/routes_behavior.rb', line 3

def route_add_initiative_ui
  page :add_initiative, :layout => :add_edit_initiative, com_dir: "#{params[:com_behavior_shortid]}"
end

#route_add_source_uiObject



3
4
5
# File 'lib/fanforce/app_factory/routes_connector.rb', line 3

def route_add_source_ui
  page :add_source, :layout => :add_source, com_dir: "#{params[:com_behavior_shortid]}"
end

#route_archive_initiative_callbackObject



19
20
21
# File 'lib/fanforce/app_factory/routes_behavior.rb', line 19

def route_archive_initiative_callback
  json status: 'finished'
end

#route_autocreate_initiative_callbackObject



27
28
29
# File 'lib/fanforce/app_factory/routes_behavior.rb', line 27

def route_autocreate_initiative_callback
  json status: 'finished'
end

#route_close_popup_uiObject



11
12
13
# File 'lib/fanforce/app_factory/routes_core.rb', line 11

def route_close_popup_ui
  page :close_popup
end

#route_config_uiObject



7
8
9
# File 'lib/fanforce/app_factory/routes_core.rb', line 7

def route_config_ui
  page :config, :layout => :config
end

#route_convert_initiative_uiObject



7
8
9
# File 'lib/fanforce/app_factory/routes_behavior.rb', line 7

def route_convert_initiative_ui
  page :convert_initiative, :layout => :convert_initiative, com_dir: "#{params[:com_behavior_shortid]}"
end

#route_destroy_initiative_callbackObject



23
24
25
# File 'lib/fanforce/app_factory/routes_behavior.rb', line 23

def route_destroy_initiative_callback
  json status: 'finished'
end

#route_edit_initiative_uiObject



11
12
13
# File 'lib/fanforce/app_factory/routes_behavior.rb', line 11

def route_edit_initiative_ui
  page :edit_initiative, :layout => :add_edit_initiative, com_dir: "#{params[:com_behavior_shortid]}"
end

#route_engage_page_uiObject



15
16
17
# File 'lib/fanforce/app_factory/routes_behavior.rb', line 15

def route_engage_page_ui
  page :engage, :layout => :engage, com_dir: "#{params[:com_behavior_shortid]}"
end

#route_index_uiObject



3
4
5
# File 'lib/fanforce/app_factory/routes_core.rb', line 3

def route_index_ui
  page :index, :layout => :promotional
end

#route_install_callbackObject



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/fanforce/app_factory/routes_core.rb', line 15

def route_install_callback
  raise "This is not a valid app install request: #{env['HTTP_HOST']}" if !ff.valid_install_request?(params)
  api_key = $Redis.get("installed:app-#{ff.params[:app_id]}:#{params[:organization_id]}")

  if api_key.present? and api_key != params[:api_key]
    is_valid_key = Fanforce::API.new.get("/api_auths/is_valid_key/#{params[:api_key]}", organization_id: params[:organization_id], app_id: params[:app_id])[:result]
    raise 'A different API key already exists for this app. Please uninstall first.' if !is_valid_key
  end
  $Redis.set("installed:app-#{ff.params[:app_id]}:#{params[:organization_id]}", params[:api_key])
  ff.auth(params[:api_key])

  json status: 'finished'
end

#route_new_message_uiObject



3
4
5
# File 'lib/fanforce/app_factory/routes_broadcaster.rb', line 3

def route_new_message_ui
  page :new_message, :layout => :new_message, com_dir: "#{params[:com_behavior_shortid]}"
end

#route_ping_pongObject



42
43
44
# File 'lib/fanforce/app_factory/routes_core.rb', line 42

def route_ping_pong
  json success: true
end

#route_source_details_uiObject



7
8
9
# File 'lib/fanforce/app_factory/routes_connector.rb', line 7

def route_source_details_ui
  page :source_details, :layout => :source_details, com_dir: "#{params[:com_behavior_shortid]}"
end

#route_uninstall_callbackObject



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/fanforce/app_factory/routes_core.rb', line 29

def route_uninstall_callback
  raise 'This is not a valid app uninstall request.' if !ff.valid_uninstall_request?(params)
  api_key = $Redis.get("installed:app-#{ff.params[:app_id]}:#{params[:organization_id]}")

  if api_key.present? and api_key != params[:api_key]
    is_valid_key = Fanforce::API.new.get("/api_auths/is_valid_key/#{params[:api_key]}", organization_id: params[:organization_id], app_id: params[:app_id])[:result]
    raise 'API keys must match before an app can be uninstalled.' if !is_valid_key
  end

  $Redis.del("installed:app-#{ff.params[:app_id]}:#{params[:organization_id]}")
  json status: 'finished'
end

#route_widget_templatesObject



3
4
5
6
# File 'lib/fanforce/app_factory/routes_js_widget.rb', line 3

def route_widget_templates
  content_type 'application/javascript'
  page :widget_templates
end