lucid-shopify 0.50.2 → 0.51.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: 7f831f0a86deaa7d4ba5b5150e287c4db5380de44e91278a2f37257a45e188c9
4
- data.tar.gz: 027071d699cec5c4cb1948d7a39be74afc7125f360cca3ffd0588af73a51c2b3
3
+ metadata.gz: 0bde6faec2cf0c1f3aebaa448053cfd08de85aaf84886fc4dfac7ee54c9b16d4
4
+ data.tar.gz: 9d88ca4bf4e318ecb84095c11e6ed4a7cf1466851a67bbbf9737f2be9c612040
5
5
  SHA512:
6
- metadata.gz: 357be516c2a2a231db80409cac04e341ad7758fd2731e5fbd6e98a52fcdab9cbe6c42c827a714d1f5c9dfea66f45b2005f4eb918cbb3416673bc25ae49fb4cbe
7
- data.tar.gz: ceb7df92ae20091390402ecae5c55ff55b427412a3ae6fc8df3de0a582c456d5c55222ce02d778739ca501fc5aaeb126bdc2ba451acc2ef195278a60364e1e51
6
+ metadata.gz: 15792eae82caf1d7b9990a9c18c8ef4d38a5c1a42ce9b644e2628db014d38b9316fe6c3ecc007581a0c8022ba4e93c0763b1c1ddffc69a72e2a802da21966a34
7
+ data.tar.gz: 9b85663e3679692a27ad2022527f101a4ac00586f044b85c3e68fae3851425c6c20d29cfa9ebe6ea55f3b45055642ad845f024d8e59ea2d7df20dd7a350fe19d
data/lib/lucid/shopify.rb CHANGED
@@ -24,9 +24,9 @@ module Lucid
24
24
  autoload :DeleteWebhook, 'lucid/shopify/delete_webhook'
25
25
  autoload :Error, 'lucid/shopify/error'
26
26
  autoload :GetRequest, 'lucid/shopify/get_request'
27
+ autoload :GraphQLPostRequest, 'lucid/shopify/graphql_post_request'
27
28
  autoload :ParseLinkHeader, 'lucid/shopify/parse_link_header'
28
29
  autoload :PostRequest, 'lucid/shopify/post_request'
29
- autoload :PostGraphQLRequest, 'lucid/shopify/post_graphql_request'
30
30
  autoload :PutRequest, 'lucid/shopify/put_request'
31
31
  autoload :RedisThrottledStrategy, 'lucid/shopify/redis_throttled_strategy'
32
32
  autoload :Request, 'lucid/shopify/request'
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'lucid/shopify/container'
4
4
 
5
- %w[delete get post post_graphql put].each { |m| require "lucid/shopify/#{m}_request" }
5
+ %w[delete get post graphql_post put].each { |m| require "lucid/shopify/#{m}_request" }
6
6
 
7
7
  module Lucid
8
8
  module Shopify
@@ -77,9 +77,9 @@ module Lucid
77
77
  send_request.(GetRequest.new(*args))
78
78
  end
79
79
 
80
- # @see PostGraphQLRequest#initialize
80
+ # @see GraphQLPostRequest#initialize
81
81
  def post_graphql(*args)
82
- send_request.(PostGraphQLRequest.new(*args))
82
+ send_request.(GraphQLPostRequest.new(*args))
83
83
  end
84
84
 
85
85
  # @see PostRequest#initialize
@@ -4,7 +4,7 @@ require 'lucid/shopify'
4
4
 
5
5
  module Lucid
6
6
  module Shopify
7
- class PostGraphQLRequest < Request
7
+ class GraphQLPostRequest < Request
8
8
  # @private
9
9
  #
10
10
  # @param credentials [Credentials]
@@ -19,7 +19,7 @@ module Lucid
19
19
  # @return [String]
20
20
  def message
21
21
  if response.errors?
22
- "bad response (#{response.status_code}) '#{response.error_messages.first}'"
22
+ "bad response (#{response.status_code}): #{response.error_messages.first}"
23
23
  else
24
24
  "bad response (#{response.status_code})"
25
25
  end
@@ -30,6 +30,19 @@ module Lucid
30
30
  ServerError = Class.new(Error)
31
31
  ShopError = Class.new(Error)
32
32
 
33
+ class GraphQLClientError < ClientError
34
+ def message
35
+ case
36
+ when response.errors?
37
+ "bad response: #{response.error_messages.first}"
38
+ when response.user_errors?
39
+ "bad response: #{response.user_error_messages.first}"
40
+ else
41
+ "bad response"
42
+ end
43
+ end
44
+ end
45
+
33
46
  extend Dry::Initializer
34
47
 
35
48
  include Enumerable
@@ -112,8 +125,8 @@ module Lucid
112
125
  end
113
126
 
114
127
  # GraphQL always has status 200.
115
- if request.is_a?(PostGraphQLRequest) && errors?
116
- raise ClientError.new(request, self)
128
+ if request.is_a?(GraphQLPostRequest) && (errors? || user_errors?)
129
+ raise GraphQLClientError.new(request, self)
117
130
  end
118
131
 
119
132
  self
@@ -131,15 +144,13 @@ module Lucid
131
144
 
132
145
  # @return [Boolean]
133
146
  def errors?
134
- return true if user_errors?
135
-
136
147
  data_hash.has_key?('errors') # should be only on 422
137
148
  end
138
149
 
139
150
  # GraphQL user errors.
140
151
  #
141
152
  # @return [Boolean]
142
- private def user_errors?
153
+ def user_errors?
143
154
  errors = find_user_errors
144
155
 
145
156
  !errors.nil? && !errors.empty?
@@ -151,7 +162,7 @@ module Lucid
151
162
  #
152
163
  # @return [Array, nil]
153
164
  private def find_user_errors(hash = data_hash)
154
- return nil unless request.is_a?(PostGraphQLRequest)
165
+ return nil unless request.is_a?(GraphQLPostRequest)
155
166
 
156
167
  hash.each do |k, v|
157
168
  return v if k == 'userErrors'
@@ -169,7 +180,7 @@ module Lucid
169
180
  # @return [Hash]
170
181
  def errors
171
182
  errors = data_hash['errors']
172
- errors = case
183
+ case
173
184
  when errors.nil?
174
185
  {}
175
186
  when errors.is_a?(String)
@@ -177,14 +188,12 @@ module Lucid
177
188
  else
178
189
  errors
179
190
  end
180
-
181
- errors.merge(user_errors)
182
191
  end
183
192
 
184
193
  # GraphQL user errors.
185
194
  #
186
195
  # @return [Hash]
187
- private def user_errors
196
+ def user_errors
188
197
  errors = find_user_errors
189
198
  return {} if errors.nil? || errors.empty?
190
199
  errors.map do |error|
@@ -197,7 +206,16 @@ module Lucid
197
206
 
198
207
  # @return [Array<String>]
199
208
  def error_messages
200
- errors.map { |field, message| "#{field} #{message}" }
209
+ errors.map do |field, message|
210
+ "#{field} #{message}"
211
+ end
212
+ end
213
+
214
+ # @return [Array<String>]
215
+ def user_error_messages
216
+ user_errors.map do |field, message|
217
+ "#{message} [#{field}]"
218
+ end
201
219
  end
202
220
 
203
221
  # @param messages [Array<String>]
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Lucid
4
4
  module Shopify
5
- VERSION = '0.50.2'
5
+ VERSION = '0.51.0'
6
6
  end
7
7
  end
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.50.2
4
+ version: 0.51.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kelsey Judson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-18 00:00:00.000000000 Z
11
+ date: 2020-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -159,8 +159,8 @@ files:
159
159
  - lib/lucid/shopify/delete_webhook.rb
160
160
  - lib/lucid/shopify/error.rb
161
161
  - lib/lucid/shopify/get_request.rb
162
+ - lib/lucid/shopify/graphql_post_request.rb
162
163
  - lib/lucid/shopify/parse_link_header.rb
163
- - lib/lucid/shopify/post_graphql_request.rb
164
164
  - lib/lucid/shopify/post_request.rb
165
165
  - lib/lucid/shopify/put_request.rb
166
166
  - lib/lucid/shopify/redis_throttled_strategy.rb