disco_app 0.15.2 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/app/clients/disco_app/graphql_client.rb +85 -0
  3. data/app/controllers/disco_app/flow/actions_controller.rb +7 -0
  4. data/app/controllers/disco_app/flow/concerns/actions_controller.rb +47 -0
  5. data/app/jobs/disco_app/flow/process_action_job.rb +11 -0
  6. data/app/jobs/disco_app/flow/process_trigger_job.rb +11 -0
  7. data/app/jobs/disco_app/shop_job.rb +8 -9
  8. data/app/models/disco_app/concerns/renders_assets.rb +1 -1
  9. data/app/models/disco_app/concerns/shop.rb +4 -5
  10. data/app/models/disco_app/flow/action.rb +7 -0
  11. data/app/models/disco_app/flow/concerns/action.rb +24 -0
  12. data/app/models/disco_app/flow/concerns/trigger.rb +24 -0
  13. data/app/models/disco_app/flow/trigger.rb +7 -0
  14. data/app/services/disco_app/flow/create_action.rb +35 -0
  15. data/app/services/disco_app/flow/create_trigger.rb +34 -0
  16. data/app/services/disco_app/flow/process_action.rb +50 -0
  17. data/app/services/disco_app/flow/process_trigger.rb +52 -0
  18. data/config/routes.rb +7 -1
  19. data/db/migrate/20150525000000_create_shops_if_not_existent.rb +80 -80
  20. data/db/migrate/20170315062548_create_disco_app_sources.rb +2 -0
  21. data/db/migrate/20170315062629_add_sources_to_shop_subscriptions.rb +2 -0
  22. data/db/migrate/20170327214540_create_disco_app_users.rb +2 -1
  23. data/db/migrate/20170606160751_fix_disco_app_users_index.rb +2 -0
  24. data/db/migrate/20181229100327_create_flow_actions_and_triggers.rb +32 -0
  25. data/lib/disco_app/configuration.rb +4 -0
  26. data/lib/disco_app/version.rb +1 -1
  27. data/lib/generators/disco_app/disco_app_generator.rb +24 -8
  28. data/lib/generators/disco_app/templates/config/appsignal.yml +12 -0
  29. data/lib/generators/disco_app/templates/config/cable.yml.tt +11 -0
  30. data/lib/generators/disco_app/templates/config/database.yml.tt +6 -3
  31. data/lib/generators/disco_app/templates/config/environments/staging.rb +108 -0
  32. data/lib/generators/disco_app/templates/config/newrelic.yml +3 -0
  33. data/lib/generators/disco_app/templates/controllers/home_controller.rb +1 -0
  34. data/lib/generators/disco_app/templates/initializers/session_store.rb +1 -1
  35. data/lib/generators/disco_app/templates/root/.env +3 -0
  36. data/lib/generators/disco_app/templates/root/.rubocop.yml +223 -158
  37. data/test/dummy/config/database.yml +3 -0
  38. data/test/dummy/config/environments/staging.rb +85 -0
  39. data/test/dummy/config/secrets.yml +3 -0
  40. data/test/dummy/db/schema.rb +39 -11
  41. data/test/services/disco_app/flow/create_action_test.rb +51 -0
  42. data/test/services/disco_app/flow/create_trigger_test.rb +56 -0
  43. data/test/services/disco_app/flow/process_action_test.rb +68 -0
  44. data/test/services/disco_app/flow/process_trigger_test.rb +61 -0
  45. data/test/vcr/flow_trigger_invalid_title.yml +35 -0
  46. data/test/vcr/flow_trigger_valid.yml +38 -0
  47. metadata +66 -11
  48. data/app/clients/disco_app/rollbar_client.rb +0 -53
  49. data/app/clients/disco_app/rollbar_client_error.rb +0 -2
  50. data/lib/generators/disco_app/templates/initializers/rollbar.rb +0 -23
  51. data/lib/tasks/rollbar.rake +0 -24
@@ -1,53 +0,0 @@
1
- require 'rest-client'
2
-
3
- class DiscoApp::RollbarClient
4
-
5
- API_URL = 'https://api.rollbar.com/api/1'
6
- CREATE_PROJECT_ENDPOINT = '/projects'
7
- ACCESS_TOKEN_ENDPOINT = '/project'
8
- ACCESS_TOKEN_SCOPE = 'post_server_item'
9
-
10
- def initialize(params)
11
- @write_access_token = params[:write_account_access_token]
12
- @read_access_token = params[:read_account_access_token]
13
- end
14
-
15
- # Create project on Rollbar, returns it new post server side access token
16
- def create_project(name)
17
- begin
18
- response = RestClient::Request.execute(
19
- method: :post,
20
- headers: { content_type: :json },
21
- url: create_api_url,
22
- payload: { name: name.parameterize }.to_json
23
- )
24
- request_access_token(ActiveSupport::JSON.decode(response).dig('result', 'id'))
25
- rescue RestClient::BadRequest => e
26
- raise RollbarClientError.new(e.message)
27
- end
28
- end
29
-
30
- private
31
-
32
- def request_access_token(project_id)
33
- begin
34
- response = RestClient.get(access_tokens_api_url(project_id))
35
- # Only return post_server_item server side access token
36
- post_server_access_token(ActiveSupport::JSON.decode(response)['result'])
37
- rescue RestClient::BadRequest => e
38
- raise RollbarClientError.new(e.message)
39
- end
40
- end
41
-
42
- def create_api_url
43
- API_URL + CREATE_PROJECT_ENDPOINT + "?access_token=#{@write_access_token}"
44
- end
45
-
46
- def access_tokens_api_url(project_id)
47
- API_URL + ACCESS_TOKEN_ENDPOINT + "/#{project_id}/access_tokens?access_token=#{@read_access_token}"
48
- end
49
-
50
- def post_server_access_token(results)
51
- results.select { |x| x['name'] == ACCESS_TOKEN_SCOPE }.first['access_token']
52
- end
53
- end
@@ -1,2 +0,0 @@
1
- class RollbarClientError < StandardError
2
- end
@@ -1,23 +0,0 @@
1
- Rollbar.configure do |config|
2
- # Fetch the access token from the environment.
3
- config.access_token = ENV['ROLLBAR_ACCESS_TOKEN']
4
-
5
- # Only use Rollbar in production when there's a token configured.
6
- unless config.access_token and Rails.env.production?
7
- config.enabled = false
8
- end
9
-
10
- # Enable delayed reporting (using Sidekiq)
11
- config.use_sidekiq
12
-
13
- # Enable "Person" feature of Rollbar in the context of a "Shop"
14
- config.person_method = 'current_shop'
15
- config.person_username_method = 'shopify_domain'
16
-
17
- # Add custom handlers.
18
- config.before_process << proc do |options|
19
- if options[:exception].is_a?(ActiveResource::ClientError) and options[:exception].message.include?('Too Many Requests')
20
- raise Rollbar::Ignore
21
- end
22
- end
23
- end
@@ -1,24 +0,0 @@
1
- require 'yaml'
2
-
3
- namespace :generate do
4
- desc "Create Rollbar project for current shopify app, and return the ROLLBAR API TOKEN"
5
- task rollbar_project: :environment do
6
- begin
7
- config_path = File.join(ENV['HOME'], '.disco_app.yml')
8
- config = YAML.load_file(config_path)
9
- rescue StandardError
10
- abort("Could not load configuration file from #{config_path}, aborting.")
11
- end
12
-
13
- params = {
14
- write_account_access_token: config['params']['ROLLBAR_ACCOUNT_ACCESS_TOKEN_WRITE'].to_s,
15
- read_account_access_token: config['params']['ROLLBAR_ACCOUNT_ACCESS_TOKEN_READ'].to_s
16
- }
17
-
18
- project_access_token = DiscoApp::RollbarClient.new(params).create_project(ENV['APP_NAME'].blank? ? ENV['SHOPIFY_APP_NAME'] : ENV['APP_NAME'])
19
- puts '#' * 80
20
- puts 'New Rollbar project successfully created!'
21
- puts "ROLLBAR_ACCESS_TOKEN = #{project_access_token}"
22
- puts '#' * 80
23
- end
24
- end