lucid-shopify 0.62.0 → 0.65.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: e66a0c2dcd13c2a44f4200675e90d3f90199fee2a199d6be48fb52ceaffab607
4
- data.tar.gz: f9d500101e5a5cae6a1f6d5de0eac6a737d5e4b7f83127e353db267f68d0d01a
3
+ metadata.gz: 1f9cc24c021a2e7349b023603f85f4b0aa39de82a71fb39a8069e0a969f6fd21
4
+ data.tar.gz: ee27cad81df8037ce13d0d05df89ae34b25d8e38ab85b4ede5706f13e9f03c51
5
5
  SHA512:
6
- metadata.gz: b9ef5945b9bf554b1826b028ddca3492c106d0c661f1a4ab7c4286a0daddd6d583043c239fd71c6803b14a17c18e3449dd07f9493faed5bc0098d13da73139a1
7
- data.tar.gz: 25b6dc870fff5fbc006f1654793e1ab4a35159956c7f5361584e16ecca8ce7664c8f1254c108a40178e8682a2e81b067132e59e7f688b5365956508aea87f05f
6
+ metadata.gz: 90dbe471a2ded8cc5cce566faea28935d9642c11d4bfaa1fc273b0f076d779b25b731e5c045c63c704778fc6ac0be27e5ad3fd4b117cdf92aa29c04bc49cb099
7
+ data.tar.gz: 66a7b9d598e47898e3a7faf211ce8ee679b965b070b9bd65d6bdc2bb2266b40a80cef2f657f51b3773547228939dd2f7b09f049b95cc290acc8b0aa50fdbd3b7
data/README.md CHANGED
@@ -35,7 +35,7 @@ Setup
35
35
 
36
36
  Lucid::Shopify.configure do |config|
37
37
  config.api_key = '...'
38
- config.api_version = '...' # e.g. '2020-01'
38
+ config.api_version = '...' # e.g. '2020-04'
39
39
  config.billing_callback_uri = '...'
40
40
  config.callback_uri = '...' # (for OAuth; unused by this gem)
41
41
  config.logger = Logger.new(STDOUT)
@@ -14,6 +14,8 @@ module Lucid
14
14
  FailedOperationError = Class.new(OperationError)
15
15
  ObsoleteOperationError = Class.new(OperationError)
16
16
 
17
+ TimeoutError = Class.new(Error)
18
+
17
19
  class Operation
18
20
  include Dry::Initializer.define -> do
19
21
  # @return [Client]
@@ -32,6 +34,11 @@ module Lucid
32
34
  # @param http [HTTP::Client]
33
35
  #
34
36
  # @yield [Enumerator<Hash>] yields each parsed line of JSONL
37
+ #
38
+ # @raise CanceledOperationError
39
+ # @raise ExpiredOperationError
40
+ # @raise FailedOperationError
41
+ # @raise ObsoleteOperationError
35
42
  def call(delay: 1, http: Container[:http], &block)
36
43
  url = loop do
37
44
  status, url = poll
@@ -71,6 +78,9 @@ module Lucid
71
78
  end
72
79
 
73
80
  # Cancel the bulk operation.
81
+ #
82
+ # @raise ObsoleteOperationError
83
+ # @raise TimeoutError
74
84
  def cancel
75
85
  begin
76
86
  client.post_graphql(credentials, <<~QUERY)
@@ -96,25 +106,24 @@ module Lucid
96
106
 
97
107
  # Poll until operation status is met.
98
108
  #
99
- # @param statuses [Array<Regexp, String>] to terminate polling on
109
+ # @param statuses [Array<String>] to terminate polling on
100
110
  # @param timeout [Integer] in seconds
101
111
  #
102
- # @raise Timeout::Error
112
+ # @raise ObsoleteOperationError
113
+ # @raise TimeoutError
103
114
  def poll_until(statuses, timeout: 60)
104
115
  Timeout.timeout(timeout) do
105
116
  loop do
106
117
  status, _ = poll
107
118
 
108
- break if statuses.any? do |expected_status|
109
- case expected_status
110
- when Regexp
111
- status.match?(expected_status)
112
- when String
113
- status == expected_status
114
- end
115
- end
119
+ break if statuses.any? { |expected_status| status == expected_status }
116
120
  end
117
121
  end
122
+ rescue Timeout::Error
123
+ raise TimeoutError, 'exceeded %s seconds polling for status %s' % [
124
+ timeout,
125
+ statuses.join(', '),
126
+ ]
118
127
  end
119
128
 
120
129
  # @return [Array(String, String | nil)] the operation status and the
@@ -15,7 +15,7 @@ module Lucid
15
15
  case link_header
16
16
  # NOTE: There is a strange behaviour where it seems that if the header
17
17
  # value exceeds a certain length, it is split into chunks. It seems that
18
- # if you use {HTTP::Headers#get}, you will always get {Array<String},
18
+ # if you use {HTTP::Headers#get}, you will always get {Array<String>},
19
19
  # and it is the special behaviour of {HTTP::Headers#[]} causing this.
20
20
  #
21
21
  # However, why is it split in the first place? Does Shopify send
@@ -29,8 +29,8 @@ module Lucid
29
29
  ClientError = Class.new(Error)
30
30
  ServerError = Class.new(Error)
31
31
  ShopError = Class.new(Error)
32
-
33
- class GraphQLClientError < ClientError
32
+ AccessTokenError = Class.new(ClientError)
33
+ GraphQLClientError = Class.new(ClientError) do
34
34
  def message
35
35
  case
36
36
  when response.errors?
@@ -114,11 +114,17 @@ module Lucid
114
114
  # @note https://shopify.dev/concepts/about-apis/response-codes
115
115
  def assert!
116
116
  case status_code
117
+ when 401
118
+ if error_message?([/access token/i])
119
+ raise AccessTokenError.new(request, self), 'Invalid access token'
120
+ else
121
+ raise ClientError.new(request, self)
122
+ end
117
123
  when 402
118
124
  raise ShopError.new(request, self), 'Shop is frozen, awaiting payment'
119
125
  when 403
120
126
  # NOTE: Not sure what this one means (undocumented).
121
- if error_message?(/unavailable shop/i)
127
+ if error_message?([/unavailable shop/i])
122
128
  raise ShopError.new(request, self), 'Shop is unavailable'
123
129
  else
124
130
  raise ClientError.new(request, self)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Lucid
4
4
  module Shopify
5
- VERSION = '0.62.0'
5
+ VERSION = '0.65.0'
6
6
  end
7
7
  end
data/lib/lucid/shopify.rb CHANGED
@@ -45,10 +45,10 @@ module Lucid
45
45
  extend Dry::Configurable
46
46
 
47
47
  setting :api_key
48
- setting :api_version, '2020-01'
48
+ setting :api_version, default: '2020-04'
49
49
  setting :billing_callback_uri
50
50
  setting :callback_uri
51
- setting :logger, Logger.new(File::NULL).freeze
51
+ setting :logger, default: Logger.new(File::NULL).freeze
52
52
  setting :scope
53
53
  setting :shared_secret
54
54
  setting :webhook_uri
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lucid-shopify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.62.0
4
+ version: 0.65.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kelsey Judson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-22 00:00:00.000000000 Z
11
+ date: 2021-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -72,28 +72,28 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0.9'
75
+ version: '0.13'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0.9'
82
+ version: '0.13'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: dry-container
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.7'
89
+ version: '0.9'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.7'
96
+ version: '0.9'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: dry-initializer
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -136,7 +136,7 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '4.1'
139
- description:
139
+ description:
140
140
  email: kelsey@lucid.nz
141
141
  executables: []
142
142
  extensions: []
@@ -179,7 +179,7 @@ homepage: https://github.com/lucidnz/gem-lucid-shopify
179
179
  licenses:
180
180
  - ISC
181
181
  metadata: {}
182
- post_install_message:
182
+ post_install_message:
183
183
  rdoc_options: []
184
184
  require_paths:
185
185
  - lib
@@ -194,8 +194,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
194
194
  - !ruby/object:Gem::Version
195
195
  version: '0'
196
196
  requirements: []
197
- rubygems_version: 3.1.2
198
- signing_key:
197
+ rubygems_version: 3.1.6
198
+ signing_key:
199
199
  specification_version: 4
200
200
  summary: Shopify client library
201
201
  test_files: []