shoptet 0.0.10 → 0.0.15

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/shoptet.rb +26 -4
  3. data/lib/shoptet/request.rb +11 -5
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 419d01d58f819a79e524940a21eb8cca44fca53cc77257acd87f6a0e0f699bb6
4
- data.tar.gz: 0366bbceb70df4b75ccef62ed9ac853b5fd1e5d56b81833ee5c1a87ee99f6208
3
+ metadata.gz: 9de0b397fa3b5dd0812bc64e68c9a2ed317955bc0f8a9e646dea9f7ed47c30c1
4
+ data.tar.gz: e0ede103c20d5d0807bc6cec27f6e256fba7764ecf31a2e35a89c50c10094e42
5
5
  SHA512:
6
- metadata.gz: 4ced7cedf10bf236c1fe434ef729707cfb152fb747f02391d037ec2adff66f5aed43c41081e1b59b43e6b8d47fe52924d1323b0c554c340e49fad2cceebd5030
7
- data.tar.gz: 887f3afe91e7b8bcbefe3bdac69bf6ce4c81a3525f27967969893aad172d5d4248e77585ec59a3c4f5ca6b8a79e7a1a16a45e605561f94a3e0b2e8e1aef8a41b
6
+ metadata.gz: 97efaa5b7940915ef996ef5c3e37abb83a4fc19c1a2efabeb6dab20fbb3dc3b14f9dd25675dbc114418ba583672e92bebc0017e741107731c657e1668d24892c
7
+ data.tar.gz: edb39d61b980ef258a6f0f5f95d8090f83ebe8a98f1be5d14676f5f33a8d50d965ea2f7978dcd0f3a754696e0932e086bf41f5e86ba20a58e35f72c554a6e428
@@ -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.10'
75
+ '0.0.15'
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")
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
@@ -21,10 +21,10 @@ class Shoptet
21
21
 
22
22
  http = Net::HTTP.new parsed_uri.host, parsed_uri.port
23
23
  http.use_ssl = true
24
- http.open_timeout = 10
25
- http.read_timeout = 10
26
- http.write_timeout = 10
27
- http.ssl_timeout = 10
24
+ http.open_timeout = 60
25
+ http.read_timeout = 60
26
+ http.write_timeout = 60
27
+ http.ssl_timeout = 60
28
28
 
29
29
  request = Net::HTTP::Get.new parsed_uri
30
30
  headers.each do |key, value|
@@ -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.10
4
+ version: 0.0.15
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-13 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