shopify_app 8.6.1 → 9.0.0

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: 2482fcdfb4e089d1dc4f846f5c9e2f59f5bfc1a731f6e44b4a62012b5f8f2281
4
- data.tar.gz: 813a680edae0e083de4f29bb7e75622ccfaaf2fa913fbf89705306d6a9dc1bf5
3
+ metadata.gz: f969c97f90fa13571a9e8af4b509148c1bd90a2f3c417e48c7beaa5d42f783c0
4
+ data.tar.gz: a99fd49067d47fd6362c79eeb92f7c3c904ac52e14f5c7b59cf77e12ae3fb9b1
5
5
  SHA512:
6
- metadata.gz: c20f5e2d266ecdb860bd2175b0ed4e3e6663110e518ab84d4b26fed44195a0dbb58c76bb129125fb6d3bf373efb4c78d8059db7f62953fabaab9124a2d64e95d
7
- data.tar.gz: c2a2b9f8f2a27765f8878da4879222b4cf03a5eed99bee67c6a29c31e27da006e3d6226df4cf58de1eab1721f701d2e22c402cd28882cb22e50730f87f421f67
6
+ metadata.gz: 825cddcd43bb04d549a3ec295452283f55cccfda4d2608bb45f66c28548843af8c527a00ef2c49b1f9d44696634d669a6684909899f2012b0ed0e637a0559b9e
7
+ data.tar.gz: 8d4e54cef864888f554c64955feda1d03e9bfba3c2a237bbdb27f7a8364e12e4a3b2f49dfefa402b1799f5886539ca770aada0857e89a46c7098ab31ac3ee5d2
data/.travis.yml CHANGED
@@ -15,9 +15,9 @@ cache:
15
15
  yarn: true
16
16
 
17
17
  rvm:
18
- - 2.3.6
19
18
  - 2.4.3
20
19
  - 2.5.0
20
+ - 2.6.2
21
21
 
22
22
  install:
23
23
  - bundle install
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ 9.0.0
2
+ -----
3
+
4
+ * Breaking change: Api version support added see [migration guide](README.md#upgrading-from-86-to-900)
5
+
1
6
  8.6.1
2
7
  -----
3
8
 
data/README.md CHANGED
@@ -34,6 +34,7 @@ Table of Contents
34
34
  * [**Authenticated**](#authenticated)
35
35
  * [**AppProxyVerification**](#appproxyverification)
36
36
  * [Recommended Usage](#recommended-usage)
37
+ * [**Upgrading from 8.6 to 9.0.0**](#upgrading-from-86-to-900)
37
38
  * [**Troubleshooting**](#troubleshooting)
38
39
  * [Generator shopify_app:install hangs](#generator-shopify_appinstall-hangs)
39
40
  * [**Testing an embedded app outside the Shopify admin**](#testing-an-embedded-app-outside-the-shopify-admin)
@@ -395,7 +396,7 @@ ShopifyApp::SessionRepository
395
396
 
396
397
  `ShopifyApp::SessionRepository` allows you as a developer to define how your sessions are retrieved and stored for shops. The `SessionRepository` is configured in the `config/initializers/shopify_app.rb` file and can be set to any object that implements `self.store(shopify_session)` which stores the session and returns a unique identifier and `self.retrieve(id)` which returns a `ShopifyAPI::Session` for the passed id. See either the `ShopifyApp::InMemorySessionStore` class or the `ShopifyApp::SessionStorage` concern for examples.
397
398
 
398
- If you only run the install generator then by default you will have an in memory store but it **won't work** on multi-server environments including Heroku. If you ran all the generators including the shop_model generator then the `Shop` model itself will be the `SessionRepository`. If you look at the implementation of the generated shop model you'll see that this gem provides a concern for the `SessionRepository`. You can use this concern on any model that responds to `shopify_domain` and `shopify_token`.
399
+ If you only run the install generator then by default you will have an in memory store but it **won't work** on multi-server environments including Heroku. If you ran all the generators including the shop_model generator then the `Shop` model itself will be the `SessionRepository`. If you look at the implementation of the generated shop model you'll see that this gem provides a concern for the `SessionRepository`. You can use this concern on any model that responds to `shopify_domain`, `shopify_token` and `api_version`.
399
400
 
400
401
  Authenticated
401
402
  -------------
@@ -444,3 +445,57 @@ Questions or problems?
444
445
 
445
446
  - [Ask questions!](https://ecommerce.shopify.com/c/shopify-apis-and-technology)
446
447
  - [Read the docs!](https://help.shopify.com/api/guides)
448
+
449
+
450
+ Upgrading from 8.6 to 9.0.0
451
+ ---------------------------
452
+
453
+ ### Configuration change
454
+
455
+ Add an api version configuration in `config/initializers/shopify_app.rb`
456
+ Set this to the version you want to run against by default see [url] for what versions are currently availabe
457
+ ```ruby
458
+ config.api_version = '2019-04'
459
+ ```
460
+
461
+ ### Session storage change
462
+
463
+ You will need to add an `api_version` method to you session storage object. The default implmentation for this is.
464
+ ```ruby
465
+ def api_version
466
+ ShopifyApp.configuration.api_version
467
+ end
468
+ ```
469
+
470
+ ### Generated file change
471
+
472
+ `embedded_app.html.erb` the useage of `shop_session.url` needs to be changed to `shop_session.domain`
473
+ ```erb
474
+ <script type="text/javascript">
475
+ ShopifyApp.init({
476
+ apiKey: "<%= ShopifyApp.configuration.api_key %>",
477
+
478
+ shopOrigin: "<%= "https://#{ @shop_session.url }" if @shop_session %>",
479
+
480
+ debug: false,
481
+ forceRedirect: true
482
+ });
483
+ </script>
484
+ ```
485
+ is changed to
486
+ ```erb
487
+ <script type="text/javascript">
488
+ ShopifyApp.init({
489
+ apiKey: "<%= ShopifyApp.configuration.api_key %>",
490
+
491
+ shopOrigin: "<%= "https://#{ @shop_session.domain }" if @shop_session %>",
492
+
493
+ debug: false,
494
+ forceRedirect: true
495
+ });
496
+ </script>
497
+ ```
498
+
499
+ ### ShopifyAPI changes
500
+
501
+ You will need to also follow the ShopifyAPI [upgrade guide](https://github.com/shopify/shopify_api/README.md#-breaking-change-notice-for-version-700-) to ensure your app is ready to work with api versioning.
@@ -50,7 +50,11 @@ module ShopifyApp
50
50
  end
51
51
 
52
52
  def set_shopify_session
53
- session_store = ShopifyAPI::Session.new(shop_name, token)
53
+ session_store = ShopifyAPI::Session.new(
54
+ domain: shop_name,
55
+ token: token,
56
+ api_version: ShopifyApp.configuration.api_version
57
+ )
54
58
 
55
59
  session[:shopify] = ShopifyApp::SessionRepository.store(session_store)
56
60
  session[:shopify_domain] = shop_name
@@ -14,6 +14,6 @@ Your Shop Details:
14
14
  Shop URL : {{ shop.url }}
15
15
  Shop Currency : {{ shop.currency }}
16
16
  No. of products in this shop : {{ shop.products_count }}
17
- <br>
18
- <hr>
17
+ <br>
18
+ <hr>
19
19
  </pre>
@@ -2,7 +2,7 @@
2
2
 
3
3
  <ul>
4
4
  <% @products.each do |product| %>
5
- <li><%= link_to product.title, "https://#{@shop_session.url}/admin/products/#{product.id}", target: "_top" %></li>
5
+ <li><%= link_to product.title, "https://#{@shop_session.domain}/admin/products/#{product.id}", target: "_top" %></li>
6
6
  <% end %>
7
7
  </ul>
8
8
 
@@ -12,6 +12,7 @@ module ShopifyApp
12
12
  class_option :old_secret, type: :string, default: '<old_secret>'
13
13
  class_option :scope, type: :array, default: ['read_products']
14
14
  class_option :embedded, type: :string, default: 'true'
15
+ class_option :api_version, type: :string, default: ShopifyAPI::ApiVersion.latest_stable_version.to_s
15
16
 
16
17
  def create_shopify_app_initializer
17
18
  @application_name = format_array_argument(options['application_name'])
@@ -19,6 +20,7 @@ module ShopifyApp
19
20
  @secret = options['secret']
20
21
  @old_secret = options['old_secret']
21
22
  @scope = format_array_argument(options['scope'])
23
+ @api_version = options['api_version']
22
24
 
23
25
  template 'shopify_app.rb', 'config/initializers/shopify_app.rb'
24
26
  end
@@ -25,7 +25,7 @@
25
25
  <script type="text/javascript">
26
26
  ShopifyApp.init({
27
27
  apiKey: "<%= ShopifyApp.configuration.api_key %>",
28
- shopOrigin: "<%= "https://#{ @shop_session.url }" if @shop_session %>",
28
+ shopOrigin: "<%= "https://#{ @shop_session.domain }" if @shop_session %>",
29
29
  debug: <%= Rails.env.development? ? 'true' : 'false' %>,
30
30
  forceRedirect: true
31
31
  });
@@ -7,5 +7,6 @@ ShopifyApp.configure do |config|
7
7
  # https://help.shopify.com/en/api/getting-started/authentication/oauth/scopes
8
8
  config.embedded_app = <%= embedded_app? %>
9
9
  config.after_authenticate_job = false
10
+ config.api_version = "<%= @api_version %>"
10
11
  config.session_repository = ShopifyApp::InMemorySessionStore
11
12
  end
@@ -1,3 +1,7 @@
1
1
  class Shop < ActiveRecord::Base
2
2
  include ShopifyApp::SessionStorage
3
+
4
+ def api_version
5
+ ShopifyApp.configuration.api_version
6
+ end
3
7
  end
@@ -15,6 +15,7 @@ module ShopifyApp
15
15
  attr_accessor :scripttags
16
16
  attr_accessor :after_authenticate_job
17
17
  attr_accessor :session_repository
18
+ attr_accessor :api_version
18
19
 
19
20
  # customise urls
20
21
  attr_accessor :root_url
@@ -32,7 +32,7 @@ module ShopifyApp
32
32
  end
33
33
 
34
34
  def login_again_if_different_shop
35
- if shop_session && params[:shop] && params[:shop].is_a?(String) && (shop_session.url != params[:shop])
35
+ if shop_session && params[:shop] && params[:shop].is_a?(String) && (shop_session.domain != params[:shop])
36
36
  clear_shop_session
37
37
  redirect_to_login
38
38
  end
@@ -6,7 +6,8 @@ module ShopifyApp
6
6
  end
7
7
 
8
8
  def perform(shop_domain:, shop_token:, scripttags:)
9
- ShopifyAPI::Session.temp(shop_domain, shop_token) do
9
+ api_version = ShopifyApp.configuration.api_version
10
+ ShopifyAPI::Session.temp(domain: shop_domain, token: shop_token, api_version: api_version) do
10
11
  manager = ScripttagsManager.new(scripttags, shop_domain)
11
12
  manager.create_scripttags
12
13
  end
@@ -6,7 +6,8 @@ module ShopifyApp
6
6
  end
7
7
 
8
8
  def perform(shop_domain:, shop_token:, webhooks:)
9
- ShopifyAPI::Session.temp(shop_domain, shop_token) do
9
+ api_version = ShopifyApp.configuration.api_version
10
+ ShopifyAPI::Session.temp(domain: shop_domain, token: shop_token, api_version: api_version) do
10
11
  manager = WebhooksManager.new(webhooks)
11
12
  manager.create_webhooks
12
13
  end
@@ -5,15 +5,21 @@ module ShopifyApp
5
5
  included do
6
6
  validates :shopify_domain, presence: true, uniqueness: { case_sensitive: false }
7
7
  validates :shopify_token, presence: true
8
+ validates :api_version, presence: true
8
9
  end
9
10
 
10
11
  def with_shopify_session(&block)
11
- ShopifyAPI::Session.temp(shopify_domain, shopify_token, &block)
12
+ ShopifyAPI::Session.temp(
13
+ domain: shopify_domain,
14
+ token: shopify_token,
15
+ api_version: api_version,
16
+ &block
17
+ )
12
18
  end
13
19
 
14
20
  class_methods do
15
21
  def store(session)
16
- shop = self.find_or_initialize_by(shopify_domain: session.url)
22
+ shop = find_or_initialize_by(shopify_domain: session.domain)
17
23
  shop.shopify_token = session.token
18
24
  shop.save!
19
25
  shop.id
@@ -23,10 +29,13 @@ module ShopifyApp
23
29
  return unless id
24
30
 
25
31
  if shop = self.find_by(id: id)
26
- ShopifyAPI::Session.new(shop.shopify_domain, shop.shopify_token)
32
+ ShopifyAPI::Session.new(
33
+ domain: shop.shopify_domain,
34
+ token: shop.shopify_token,
35
+ api_version: shop.api_version
36
+ )
27
37
  end
28
38
  end
29
39
  end
30
-
31
40
  end
32
41
  end
@@ -1,3 +1,3 @@
1
1
  module ShopifyApp
2
- VERSION = '8.6.1'.freeze
2
+ VERSION = '9.0.0'.freeze
3
3
  end
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shopify_app",
3
- "version": "8.6.1",
3
+ "version": "9.0.0",
4
4
  "repository": "git@github.com:Shopify/shopify_app.git",
5
5
  "author": "Shopify",
6
6
  "license": "MIT",
data/shopify_app.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.add_runtime_dependency('browser_sniffer', '~> 1.1.0')
14
14
  s.add_runtime_dependency('rails', '>= 5.0.0')
15
- s.add_runtime_dependency('shopify_api', '>= 4.3.5', '< 7.0.0')
15
+ s.add_runtime_dependency('shopify_api', '>= 7.0.0')
16
16
  s.add_runtime_dependency('omniauth-shopify-oauth2', '~> 2.1.0')
17
17
 
18
18
  s.add_development_dependency('rake')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shopify_app
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.6.1
4
+ version: 9.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-08 00:00:00.000000000 Z
11
+ date: 2019-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: browser_sniffer
@@ -43,9 +43,6 @@ dependencies:
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
- - !ruby/object:Gem::Version
47
- version: 4.3.5
48
- - - "<"
49
46
  - !ruby/object:Gem::Version
50
47
  version: 7.0.0
51
48
  type: :runtime
@@ -53,9 +50,6 @@ dependencies:
53
50
  version_requirements: !ruby/object:Gem::Requirement
54
51
  requirements:
55
52
  - - ">="
56
- - !ruby/object:Gem::Version
57
- version: 4.3.5
58
- - - "<"
59
53
  - !ruby/object:Gem::Version
60
54
  version: 7.0.0
61
55
  - !ruby/object:Gem::Dependency