shoptet 0.0.10 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
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