shopify_api 12.1.0 → 12.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f3c03360ffab3820b674ee42ec8cc8de1028aa852f07b9b09a1ffb111c81cf5b
4
- data.tar.gz: 727487abd59263c77bdf81dd0e3af9f23914260b54d7fb132d834d5943939202
3
+ metadata.gz: 9061778f35348ae6c1013eed58d1d1d274e84ec63796d33296ac7205319aee40
4
+ data.tar.gz: 9e0ea6bd2543ad11963eab31617b2700383825471483ecef46793fc9e454fd34
5
5
  SHA512:
6
- metadata.gz: a4a7e438b3e0b16e5357c3dbb9f981dcb56bed718a3ea57fab5451b699427dcb651d12ac2a9f40393f6d85fcf0bf2eb737d789cd72540f38faeaed7e0fc3f0aa
7
- data.tar.gz: b67a4fc69202ee4da880052bfc5e6e76c69611b099a555ce5318763c0e691484dab4c09b6b309c90c5475605a1d16a8867ba060ec2e01526b97d25eee86acaeb
6
+ metadata.gz: 05a97d69417a4192bd8e83e5eded057931640d700041f6b6d15459d85b3a463de049e5789153dfee75a9df6af8f287956dca4e51c8a230a816596a3e85a2a3b2
7
+ data.tar.gz: a7a1d5e77c69b85566c2484ca64aebb05cd6bfd3701f90aa17b9d8ab5b1f1db6e28ecdbb34dc0dc76cefd8813ab14e98e1fcf2bb8d41797d8f235b757e90f274
@@ -12,12 +12,12 @@ jobs:
12
12
  steps:
13
13
  - uses: actions/stale@v5
14
14
  with:
15
- days-before-issue-stale: 90
15
+ days-before-issue-stale: 60
16
16
  days-before-issue-close: 14
17
17
  operations-per-run: 1000
18
18
  stale-issue-label: "Stale"
19
19
  stale-issue-message: >
20
- This issue is stale because it has been open for 90 days with no activity. It will be closed if no further action occurs in 14 days.
20
+ This issue is stale because it has been open for 60 days with no activity. It will be closed if no further action occurs in 14 days.
21
21
  close-issue-message: |
22
22
  We are closing this issue because it has been inactive for a few months.
23
23
  This probably means that it is not reproducible or it has been fixed in a newer version.
data/CHANGELOG.md CHANGED
@@ -4,6 +4,13 @@ Note: For changes to the API, see https://shopify.dev/changelog?filter=api
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## Version 12.2.1
8
+ - [#1045](https://github.com/Shopify/shopify-api-ruby/pull/1045) Fixes bug with host/host_name requirement.
9
+
10
+ ## Version 12.2.0
11
+
12
+ - [#1023](https://github.com/Shopify/shopify-api-ruby/pull/1023) Allow custom scopes during the OAuth process
13
+
7
14
  ## Version 12.1.0
8
15
 
9
16
  - [#1017](https://github.com/Shopify/shopify-api-ruby/pull/1017) Add support for `http` with localhost development without using a TLS tunnel
data/Gemfile CHANGED
@@ -9,4 +9,5 @@ group :test do
9
9
  gem "fakefs", require: false
10
10
  gem "webmock"
11
11
  gem "mocha"
12
+ gem "pry-byebug"
12
13
  end
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shopify_api (12.1.0)
4
+ shopify_api (12.2.1)
5
5
  concurrent-ruby
6
6
  hash_diff
7
7
  httparty
@@ -23,6 +23,7 @@ GEM
23
23
  addressable (2.8.0)
24
24
  public_suffix (>= 2.0.2, < 5.0)
25
25
  ast (2.4.2)
26
+ byebug (11.1.3)
26
27
  coderay (1.1.3)
27
28
  concurrent-ruby (1.1.9)
28
29
  crack (0.4.5)
@@ -38,6 +39,7 @@ GEM
38
39
  concurrent-ruby (~> 1.0)
39
40
  json (2.6.2)
40
41
  jwt (2.5.0)
42
+ language_server-protocol (3.17.0.1)
41
43
  method_source (1.0.0)
42
44
  mime-types (3.4.1)
43
45
  mime-types-data (~> 3.2015)
@@ -51,9 +53,13 @@ GEM
51
53
  parallel (1.22.1)
52
54
  parser (3.1.2.1)
53
55
  ast (~> 2.4.1)
56
+ prettier_print (0.1.0)
54
57
  pry (0.14.1)
55
58
  coderay (~> 1.1)
56
59
  method_source (~> 1.0)
60
+ pry-byebug (3.10.1)
61
+ byebug (~> 11.0)
62
+ pry (>= 0.13, < 0.15)
57
63
  public_suffix (4.0.6)
58
64
  rainbow (3.1.1)
59
65
  rake (13.0.6)
@@ -80,6 +86,10 @@ GEM
80
86
  rubocop (~> 1.35)
81
87
  rubocop-sorbet (0.6.11)
82
88
  rubocop (>= 0.90.0)
89
+ ruby-lsp (0.3.2)
90
+ language_server-protocol (~> 3.17.0)
91
+ sorbet-runtime
92
+ syntax_tree (>= 3.4)
83
93
  ruby-progressbar (1.11.0)
84
94
  securerandom (0.2.0)
85
95
  sorbet (0.5.10438)
@@ -94,6 +104,8 @@ GEM
94
104
  sorbet (>= 0.5.9204)
95
105
  sorbet-runtime (>= 0.5.9204)
96
106
  thor (>= 0.19.2)
107
+ syntax_tree (3.6.1)
108
+ prettier_print
97
109
  tapioca (0.10.2)
98
110
  bundler (>= 1.17.3)
99
111
  netrc (>= 0.11.0)
@@ -132,10 +144,12 @@ DEPENDENCIES
132
144
  fakefs
133
145
  minitest
134
146
  mocha
147
+ pry-byebug
135
148
  rake
136
149
  rubocop
137
150
  rubocop-shopify
138
151
  rubocop-sorbet
152
+ ruby-lsp
139
153
  shopify_api!
140
154
  sorbet
141
155
  tapioca
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  This library provides support for Ruby [Shopify apps](https://apps.shopify.com/) to access the [Shopify Admin API](https://shopify.dev/api/admin), by making it easier to perform the following actions:
8
8
 
9
- - Creating [online](https://shopify.dev/concepts/about-apis/authentication#online-access) or [offline](https://shopify.dev/concepts/about-apis/authentication#offline-access) access tokens for the Admin API via OAuth
9
+ - Creating [online](https://shopify.dev/apps/auth/oauth/access-modes#online-access) or [offline](https://shopify.dev/apps/auth/oauth/access-modes#offline-access) access tokens for the Admin API via OAuth
10
10
  - Making requests to the [REST API](https://shopify.dev/api/admin-rest)
11
11
  - Making requests to the [GraphQL API](https://shopify.dev/api/admin-graphql)
12
12
  - Registering/processing webhooks
@@ -51,7 +51,7 @@ Start by initializing the `ShopifyAPI::Context` with the parameters of your app
51
51
  ShopifyAPI::Context.setup(
52
52
  api_key: "<api-key>",
53
53
  api_secret_key: "<api-secret-key>",
54
- host_name: "<application-host-name>",
54
+ host: "<https://application-host-name.com>",
55
55
  scope: "read_orders,read_products,etc",
56
56
  session_storage: ShopifyAPI::Auth::FileSessionStorage.new, # See more details below
57
57
  is_embedded: true, # Set to true if you are building an embedded app
@@ -5,7 +5,7 @@ The implementation of session storage that you pass in `ShopifyAPI::Context.setu
5
5
 
6
6
  ## Create a New Session Storage Class
7
7
 
8
- You can create a session storage class that includes `ShopifyAPI::Auth::SessionStore` and override the methods as shown in the table and example below:
8
+ You can create a session storage class that includes `ShopifyAPI::Auth::SessionStorage` and override the methods as shown in the table and example below:
9
9
 
10
10
  | Method Name | Input Type | Return Type |
11
11
  | ---------------------- | --------------------------------- | ------------------------------ |
@@ -16,9 +16,18 @@ module ShopifyAPI
16
16
  shop: String,
17
17
  redirect_path: String,
18
18
  is_online: T.nilable(T::Boolean),
19
+ scope_override: T.nilable(T.any(ShopifyAPI::Auth::AuthScopes, T::Array[String], String)),
19
20
  ).returns(T::Hash[Symbol, T.any(String, SessionCookie)])
20
21
  end
21
- def begin_auth(shop:, redirect_path:, is_online: true)
22
+ def begin_auth(shop:, redirect_path:, is_online: true, scope_override: nil)
23
+ scope = if scope_override.nil?
24
+ ShopifyAPI::Context.scope
25
+ elsif scope_override.is_a?(ShopifyAPI::Auth::AuthScopes)
26
+ scope_override
27
+ else
28
+ ShopifyAPI::Auth::AuthScopes.new(scope_override)
29
+ end
30
+
22
31
  unless Context.setup?
23
32
  raise Errors::ContextNotSetupError, "ShopifyAPI::Context not setup, please call ShopifyAPI::Context.setup"
24
33
  end
@@ -30,7 +39,7 @@ module ShopifyAPI
30
39
 
31
40
  query = {
32
41
  client_id: ShopifyAPI::Context.api_key,
33
- scope: ShopifyAPI::Context.scope.to_s,
42
+ scope: scope.to_s,
34
43
  redirect_uri: "#{ShopifyAPI::Context.host}#{redirect_path}",
35
44
  state: state,
36
45
  "grant_options[]": is_online ? "per-user" : "",
@@ -8,7 +8,6 @@ module ShopifyAPI
8
8
  @api_key = T.let("", String)
9
9
  @api_secret_key = T.let("", String)
10
10
  @api_version = T.let(LATEST_SUPPORTED_ADMIN_VERSION, String)
11
- @host_name = T.let("", String)
12
11
  @scope = T.let(Auth::AuthScopes.new, Auth::AuthScopes)
13
12
  @session_storage = T.let(ShopifyAPI::Auth::FileSessionStorage.new, ShopifyAPI::Auth::SessionStorage)
14
13
  @is_private = T.let(false, T::Boolean)
@@ -30,12 +29,12 @@ module ShopifyAPI
30
29
  api_key: String,
31
30
  api_secret_key: String,
32
31
  api_version: String,
33
- host_name: String,
34
32
  scope: T.any(T::Array[String], String),
35
33
  is_private: T::Boolean,
36
34
  is_embedded: T::Boolean,
37
35
  session_storage: ShopifyAPI::Auth::SessionStorage,
38
36
  logger: Logger,
37
+ host_name: T.nilable(String),
39
38
  host: T.nilable(String),
40
39
  private_shop: T.nilable(String),
41
40
  user_agent_prefix: T.nilable(String),
@@ -46,12 +45,12 @@ module ShopifyAPI
46
45
  api_key:,
47
46
  api_secret_key:,
48
47
  api_version:,
49
- host_name:,
50
48
  scope:,
51
49
  is_private:,
52
50
  is_embedded:,
53
51
  session_storage:,
54
52
  logger: Logger.new($stdout),
53
+ host_name: nil,
55
54
  host: ENV["HOST"] || "https://#{host_name}",
56
55
  private_shop: nil,
57
56
  user_agent_prefix: nil,
@@ -65,7 +64,6 @@ module ShopifyAPI
65
64
  @api_key = api_key
66
65
  @api_secret_key = api_secret_key
67
66
  @api_version = api_version
68
- @host_name = host_name
69
67
  @host = T.let(host, T.nilable(String))
70
68
  @is_private = is_private
71
69
  @scope = Auth::AuthScopes.new(scope)
@@ -108,7 +106,7 @@ module ShopifyAPI
108
106
  end
109
107
 
110
108
  sig { returns(String) }
111
- attr_reader :api_key, :api_secret_key, :api_version, :host_name
109
+ attr_reader :api_key, :api_secret_key, :api_version
112
110
 
113
111
  sig { returns(Auth::AuthScopes) }
114
112
  attr_reader :scope
@@ -134,7 +132,7 @@ module ShopifyAPI
134
132
 
135
133
  sig { returns(T::Boolean) }
136
134
  def setup?
137
- [api_key, api_secret_key, host_name, T.must(host)].none?(&:empty?)
135
+ [api_key, api_secret_key, T.must(host)].none?(&:empty?)
138
136
  end
139
137
 
140
138
  sig { returns(T.nilable(Auth::Session)) }
@@ -158,6 +156,11 @@ module ShopifyAPI
158
156
  def host_scheme
159
157
  T.must(URI.parse(T.must(host)).scheme)
160
158
  end
159
+
160
+ sig { returns(String) }
161
+ def host_name
162
+ T.must(URI(T.must(host)).host)
163
+ end
161
164
  end
162
165
  end
163
166
  end
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module ShopifyAPI
5
- VERSION = "12.1.0"
5
+ VERSION = "12.2.1"
6
6
  end
data/shopify_api.gemspec CHANGED
@@ -43,10 +43,12 @@ Gem::Specification.new do |s|
43
43
  s.add_runtime_dependency("zeitwerk", "~> 2.5")
44
44
 
45
45
  s.add_development_dependency("activesupport")
46
+ s.add_development_dependency("pry-byebug")
46
47
  s.add_development_dependency("rake")
47
48
  s.add_development_dependency("rubocop")
48
49
  s.add_development_dependency("rubocop-shopify")
49
50
  s.add_development_dependency("rubocop-sorbet")
51
+ s.add_development_dependency("ruby-lsp")
50
52
  s.add_development_dependency("sorbet")
51
53
  s.add_development_dependency("tapioca")
52
54
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shopify_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.1.0
4
+ version: 12.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-13 00:00:00.000000000 Z
11
+ date: 2022-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -150,6 +150,20 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: pry-byebug
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: rake
155
169
  requirement: !ruby/object:Gem::Requirement
@@ -206,6 +220,20 @@ dependencies:
206
220
  - - ">="
207
221
  - !ruby/object:Gem::Version
208
222
  version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: ruby-lsp
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
209
237
  - !ruby/object:Gem::Dependency
210
238
  name: sorbet
211
239
  requirement: !ruby/object:Gem::Requirement