shoptet 0.0.11 → 0.0.16

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: 0c25e08acd0126a8756438b17836f64f13268628e32a9fc9f8a1375f75096626
4
- data.tar.gz: 2b998f5dd0df5d74a6c56be2b1fabfa4651d56efcbb276194f56b7aa8f62f10a
3
+ metadata.gz: 4c86fdea4c6992986c3db615c17a5687d5fb71eedd29af756a1e746c03718df0
4
+ data.tar.gz: 275c40c5fedd71fb72b4be6327951ba810763661763d7d950c1eb273d6308625
5
5
  SHA512:
6
- metadata.gz: 13ba8bead9e42327929dd0bd25f64cc838ecbc52f4a26c506c379301da92d89053ec7189cd5dabee353c9220ae5a1941652690fdbcafcebe2e4c91c63a1d0cb9
7
- data.tar.gz: 8f34a681340f8ad9db35c242ae808b00e8b8062c84698dc46e735037a9b9c696d203402b1e77d0e4b5a116e2bb34507b4062a697ce2b1d36608ce43917f03bba
6
+ metadata.gz: 5d5775690ef05f456177650b4bf11ec8571c8fd33bd9c0ba86ca4b83057f3f0ef22fb4075161a6385f0bb9945b9c673f505b541e1a002a6b41e3bfe3cd815505
7
+ data.tar.gz: c2a5e2b984c2fedc2cedf6b5f59f125bc2c609bb3fe359ddeae11c6a20afceaf9e361d55f6b363d4695c633e8e48b4696e1924ce01e4009883a968d17d2f3214
@@ -8,6 +8,12 @@ class Shoptet
8
8
  class AddonSuspended < StandardError; end
9
9
  class AddonNotInstalled < StandardError; end
10
10
  class InvalidTokenNoRights < StandardError; end
11
+ class EmptyRequestResponse < StandardError; end
12
+ class MaxPageReached < StandardError; end
13
+
14
+ EXPIRED_TOKEN_CODE = 'expired-token'
15
+ INVALID_TOKEN_CODE = 'invalid-token'
16
+ ADDON_NOT_INSTALLED = 'Addon installation is not approved.'
11
17
 
12
18
  DEFAULT_ON_TOKEN_ERROR = -> (api) do
13
19
  api.api_token = api.new_api_token
@@ -66,7 +72,7 @@ class Shoptet
66
72
  end
67
73
 
68
74
  def self.version
69
- '0.0.11'
75
+ '0.0.16'
70
76
  end
71
77
 
72
78
  def self.ar_on_token_error(model)
@@ -247,6 +253,14 @@ class Shoptet
247
253
  end
248
254
  end
249
255
 
256
+ def suspended?
257
+ data = shop_info
258
+
259
+ false if data
260
+ rescue Shoptet::AddonSuspended
261
+ true
262
+ end
263
+
250
264
  private
251
265
 
252
266
  def enumerize base_url, filters = {}, data_key = nil
@@ -256,15 +270,23 @@ class Shoptet
256
270
  def handle_errors result, uri, headers
257
271
  error = result['error']
258
272
  errors = result['errors'] || []
259
- token_errors, non_token_errors = errors.partition { |err| ['invalid-token', 'expired-token'].include? err['errorCode'] }
273
+ token_errors, non_token_errors = errors.partition do |err|
274
+ code = err['errorCode']
275
+ message = err['message']
276
+
277
+ code == EXPIRED_TOKEN_CODE ||
278
+ code == INVALID_TOKEN_CODE && (message.include?('Invalid access token') || message.include?('Missing access token'))
279
+ end
260
280
 
261
281
  if error || non_token_errors.any?
262
- if error == 'addon_suspended'
282
+ if error == 'addon_suspended' || errors.any? { |e| e["errorCode"] == INVALID_TOKEN_CODE && e['message'] == ADDON_NOT_INSTALLED }
263
283
  raise AddonSuspended
264
- elsif error == 'addon_not_installed'
284
+ elsif (error == 'addon_not_installed')
265
285
  raise AddonNotInstalled
266
286
  elsif errors.any? { |err| err["errorCode"] == 'invalid-token-no-rights' }
267
287
  raise InvalidTokenNoRights
288
+ elsif errors.any? { |err| err["errorCode"] == 'page-not-found' && err['message'].include?('max page is') }
289
+ raise MaxPageReached
268
290
  else
269
291
  raise Error.new result
270
292
  end
@@ -32,8 +32,14 @@ class Shoptet
32
32
  end
33
33
 
34
34
  response = http.request request
35
+ parsed_body = JSON.parse response.body
35
36
 
36
- JSON.parse response.body
37
+ unless parsed_body
38
+ message = "Status code: #{response.code}, url: #{uri}"
39
+ fail Shoptet::EmptyRequestResponse.new(message)
40
+ end
41
+
42
+ parsed_body
37
43
  rescue Net::OpenTimeout
38
44
  retry if attempt < 4
39
45
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shoptet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Premysl Donat
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-23 00:00:00.000000000 Z
11
+ date: 2020-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: irb