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.
- checksums.yaml +4 -4
- data/lib/shoptet.rb +26 -4
- data/lib/shoptet/request.rb +11 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9de0b397fa3b5dd0812bc64e68c9a2ed317955bc0f8a9e646dea9f7ed47c30c1
|
4
|
+
data.tar.gz: e0ede103c20d5d0807bc6cec27f6e256fba7764ecf31a2e35a89c50c10094e42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97efaa5b7940915ef996ef5c3e37abb83a4fc19c1a2efabeb6dab20fbb3dc3b14f9dd25675dbc114418ba583672e92bebc0017e741107731c657e1668d24892c
|
7
|
+
data.tar.gz: edb39d61b980ef258a6f0f5f95d8090f83ebe8a98f1be5d14676f5f33a8d50d965ea2f7978dcd0f3a754696e0932e086bf41f5e86ba20a58e35f72c554a6e428
|
data/lib/shoptet.rb
CHANGED
@@ -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.
|
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
|
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
|
data/lib/shoptet/request.rb
CHANGED
@@ -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 =
|
25
|
-
http.read_timeout =
|
26
|
-
http.write_timeout =
|
27
|
-
http.ssl_timeout =
|
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
|
-
|
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.
|
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-
|
11
|
+
date: 2020-11-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: irb
|