disco_app 0.6.5 → 0.6.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8f7c3fa69d7d40efc67ae58e4094b26dddbe43dd88ca7e14cfccecceca75d39b
4
- data.tar.gz: 2a6af21f5c3b4c449ceed89c87179af6114a27708e469e19cd2dc66af1a92013
3
+ metadata.gz: aa5a75b03995277ab80d6bd150044085e1f7c7fad16340838ee717d292fcf38e
4
+ data.tar.gz: 218728b186a4210cf8f3411f8272b049eca6936f3ab123b82560b72b71634bc3
5
5
  SHA512:
6
- metadata.gz: 14633c37030a784960030d6b7ab1550834c55ebf04567bf116f0f471ca542bac63904cab028ca7ca81c31da476abfa85784715518cad8afc384a3c12f4e18ea0
7
- data.tar.gz: 2e7690604315c2d9a2988c5f9d907916ae1662be99e378e40474fdc496d8b2981258e6c74d6fb1d9452547e907762fe2c2e237ab878e7a4b8801741660a553b2
6
+ metadata.gz: 748b9644cd88061e016a169438bb8ad318f41d587fb67ee8a001f02632cccb108e3cc7ff3d613d0efd75557d1c6bcf8a3e4aa81851ba8b8a25a8efff9de959e9
7
+ data.tar.gz: 93e97fbd2f46744b30babe64fe32ae1f94a328af7aef7952883734915919ea14cd884988cc862afdeaa9931bfc2af452aed13f34e2d5cbd0a73604473bba1a5f
@@ -10,10 +10,12 @@ module DiscoApp::Concerns::AppInstalledJob
10
10
  # Perform application installation.
11
11
  #
12
12
  # - Synchronise webhooks.
13
+ # - Synchronise carrier services.
13
14
  # - Perform initial update of shop information.
14
15
  #
15
16
  def perform(domain)
16
17
  DiscoApp::SynchroniseWebhooksJob.perform_now(domain)
18
+ DiscoApp::SynchroniseCarrierServicesJob.perform_now(domain)
17
19
  DiscoApp::ShopUpdateJob.perform_now(domain)
18
20
  end
19
21
 
@@ -0,0 +1,47 @@
1
+ module DiscoApp::Concerns::SynchroniseCarrierServicesJob
2
+ extend ActiveSupport::Concern
3
+
4
+ # Ensure the carrier services registered with our shop are the same as those
5
+ # listed in our application configuration.
6
+ def perform(shopify_domain)
7
+ # Registered any carrier services that haven't been registered yet.
8
+ (callback_urls - current_callback_urls).each do |callback_url|
9
+ ShopifyAPI::CarrierService.create(
10
+ name: carrier_service_name,
11
+ callback_url: callback_url,
12
+ service_discovery: true,
13
+ format: 'json'
14
+ )
15
+ end
16
+
17
+ # Remove any extraneous carrier services.
18
+ current_carrier_services.each do |carrier_service|
19
+ unless callback_urls.include?(carrier_service.callback_url)
20
+ carrier_service.delete
21
+ end
22
+ end
23
+ end
24
+
25
+ protected
26
+
27
+ def carrier_service_name
28
+ Rails.application.config.x.shopify_app_name
29
+ end
30
+
31
+ def callback_urls
32
+ []
33
+ end
34
+
35
+ private
36
+
37
+ # Return a list of currently registered callback URLs.
38
+ def current_callback_urls
39
+ current_carrier_services.map(&:callback_url)
40
+ end
41
+
42
+ # Return a list of currently registered carrier services.
43
+ def current_carrier_services
44
+ @current_carrier_service ||= ShopifyAPI::CarrierService.find(:all)
45
+ end
46
+
47
+ end
@@ -9,7 +9,11 @@ module DiscoApp::Concerns::SynchroniseWebhooksJob
9
9
 
10
10
  # Registered any webhooks that haven't been registered yet.
11
11
  (expected_topics - current_topics).each do |topic|
12
- ShopifyAPI::Webhook.create(topic: topic, address: webhooks_url, format: 'json')
12
+ ShopifyAPI::Webhook.create(
13
+ topic: topic,
14
+ address: webhooks_url,
15
+ format: 'json'
16
+ )
13
17
  end
14
18
 
15
19
  # Remove any extraneous topics.
@@ -0,0 +1,3 @@
1
+ class DiscoApp::SynchroniseCarrierServicesJob < DiscoApp::ShopJob
2
+ include DiscoApp::Concerns::SynchroniseCarrierServicesJob
3
+ end
@@ -1,3 +1,3 @@
1
1
  module DiscoApp
2
- VERSION = "0.6.5"
2
+ VERSION = "0.6.6"
3
3
  end
@@ -4,12 +4,12 @@ class DiscoAppGenerator < Rails::Generators::Base
4
4
 
5
5
  # Copy a number of template files to the top-level directory of our application:
6
6
  #
7
- # - .env and .env.sample for settings environment variables in development with dotenv-rails;
7
+ # - .env and .env.local for settings environment variables in development with dotenv-rails;
8
8
  # - Slightly customised version of the default Rails .gitignore;
9
9
  # - Default simple Procfile for Heroku.
10
10
  #
11
11
  def copy_root_files
12
- %w(.env .env.sample .gitignore Procfile).each do |file|
12
+ %w(.env .env.local .gitignore Procfile).each do |file|
13
13
  copy_file "root/#{file}", file
14
14
  end
15
15
  end
@@ -38,7 +38,7 @@ module DiscoApp
38
38
  application configuration, env: :production
39
39
  end
40
40
 
41
- # Add entries to .env and .env.sample
41
+ # Add entries to .env and .env.local
42
42
  def add_env_variables
43
43
  configuration = <<-CONFIG.strip_heredoc
44
44
 
@@ -46,7 +46,7 @@ module DiscoApp
46
46
  MAILGUN_API_DOMAIN=
47
47
  CONFIG
48
48
  append_to_file '.env', configuration
49
- append_to_file '.env.sample', configuration
49
+ append_to_file '.env.local', configuration
50
50
  end
51
51
 
52
52
  end
@@ -0,0 +1,10 @@
1
+ namespace :carrier_services do
2
+
3
+ desc 'Synchronise carrier services across all installed shops.'
4
+ task sync: :environment do
5
+ DiscoApp::Shop.installed.has_active_shopify_plan.each do |shop|
6
+ DiscoApp::SynchroniseCarrierServicesJob.perform_later(shop.shopify_domain)
7
+ end
8
+ end
9
+
10
+ end
@@ -12,6 +12,7 @@ class DiscoApp::AppInstalledJobTest < ActionController::TestCase
12
12
  end
13
13
 
14
14
  test 'app installed job performs shop update job' do
15
+ stub_request(:get, "#{@shop.admin_url}/webhooks.json").to_return(status: 200, body: api_fixture('widget_store/webhooks'))
15
16
  stub_request(:post, "#{@shop.admin_url}/webhooks.json").to_return(status: 200)
16
17
  stub_request(:get, "#{@shop.admin_url}/shop.json").to_return(status: 200, body: api_fixture('widget_store/shop'))
17
18
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: disco_app
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.5
4
+ version: 0.6.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Ballard
@@ -278,9 +278,11 @@ files:
278
278
  - app/jobs/disco_app/concerns/app_installed_job.rb
279
279
  - app/jobs/disco_app/concerns/app_uninstalled_job.rb
280
280
  - app/jobs/disco_app/concerns/shop_update_job.rb
281
+ - app/jobs/disco_app/concerns/synchronise_carrier_services_job.rb
281
282
  - app/jobs/disco_app/concerns/synchronise_webhooks_job.rb
282
283
  - app/jobs/disco_app/shop_job.rb
283
284
  - app/jobs/disco_app/shop_update_job.rb
285
+ - app/jobs/disco_app/synchronise_carrier_services_job.rb
284
286
  - app/jobs/disco_app/synchronise_webhooks_job.rb
285
287
  - app/models/disco_app/concerns/plan.rb
286
288
  - app/models/disco_app/concerns/shop.rb
@@ -331,6 +333,7 @@ files:
331
333
  - lib/generators/disco_app/templates/initializers/shopify_session_repository.rb
332
334
  - lib/generators/disco_app/templates/root/Procfile
333
335
  - lib/generators/disco_app/templates/views/home/index.html.erb
336
+ - lib/tasks/carrier_services.rake
334
337
  - lib/tasks/start.rake
335
338
  - lib/tasks/webhooks.rake
336
339
  - test/controllers/disco_app/install_controller_test.rb
@@ -379,6 +382,7 @@ files:
379
382
  - test/dummy/public/500.html
380
383
  - test/dummy/public/favicon.ico
381
384
  - test/fixtures/api/widget_store/shop.json
385
+ - test/fixtures/api/widget_store/webhooks.json
382
386
  - test/fixtures/disco_app/plans.yml
383
387
  - test/fixtures/disco_app/shops.yml
384
388
  - test/fixtures/disco_app/subscriptions.yml
@@ -458,6 +462,7 @@ test_files:
458
462
  - test/dummy/config/boot.rb
459
463
  - test/dummy/config/database.yml
460
464
  - test/dummy/config/application.rb
465
+ - test/fixtures/api/widget_store/webhooks.json
461
466
  - test/fixtures/api/widget_store/shop.json
462
467
  - test/fixtures/disco_app/shops.yml
463
468
  - test/fixtures/disco_app/subscriptions.yml