shoptet 0.0.9 → 0.0.14

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 +30 -6
  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: 8b98a4b88e59f4cd33fcddb5448caae903e5cbeb81b8bda9fcf9c52a7db337aa
4
- data.tar.gz: d138e3406b01db0f8b4833aeb3ac2b16a1b590341922d9d50e370774ef2de8bf
3
+ metadata.gz: 289440d376a54ad0d925741b1964a1db28beb3f27ea7bfc667eccbc427458f2d
4
+ data.tar.gz: '09d1742a1b57c06acb939aa547aefdea76513905fd89679475438e3c2e515e65'
5
5
  SHA512:
6
- metadata.gz: 91e5a23fb8973e97536947176590811e58c216a3b3a7e43cec2b57eadd9bbaafbc7a93e00bd761530853a351dc7fb6328ea8aac47f174cb876d7161de27136d6
7
- data.tar.gz: a74007a4120bbd10f7be9e9ad1f95cfa474290bf2900eac5fcd0702f01588c2d369775b270848d2b285b03f17f3531e64747539a44841aaba9ee51d7a9b1d105
6
+ metadata.gz: 366aa1983278c08fac3864f79e9b3322e5ac72e99a5beca1a3aea72926eb0facafb2cfc8018f46c7fe40459c197823c05c2c6e291231d8e48a41bcac254be199
7
+ data.tar.gz: 745cc481bb6fcc8711bc69b81242097da6a52c9afe0e31a499e5405fc5e8b08c3659e4a5154c151032f0050d18ee99ee8887c14c8316701045d0193289ea6d41
@@ -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.9'
75
+ '0.0.14'
70
76
  end
71
77
 
72
78
  def self.ar_on_token_error(model)
@@ -150,12 +156,14 @@ class Shoptet
150
156
  end
151
157
 
152
158
  def shop_info api_params = {}
153
- result = request 'https://api.myshoptet.com/api/eshop'
159
+ url = assemble_uri 'https://api.myshoptet.com/api/eshop', api_params
160
+ result = request url
154
161
  result['data']
155
162
  end
156
163
 
157
164
  def design_info api_params = {}
158
- result = request 'https://api.myshoptet.com/api/eshop/design'
165
+ url = assemble_uri 'https://api.myshoptet.com/api/eshop/design', api_params
166
+ result = request url
159
167
 
160
168
  result['data']
161
169
  end
@@ -245,6 +253,14 @@ class Shoptet
245
253
  end
246
254
  end
247
255
 
256
+ def suspended?
257
+ data = shop_info
258
+
259
+ false if data
260
+ rescue Shoptet::AddonSuspended
261
+ true
262
+ end
263
+
248
264
  private
249
265
 
250
266
  def enumerize base_url, filters = {}, data_key = nil
@@ -254,15 +270,23 @@ class Shoptet
254
270
  def handle_errors result, uri, headers
255
271
  error = result['error']
256
272
  errors = result['errors'] || []
257
- 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 == "Invalid access token."
279
+ end
258
280
 
259
281
  if error || non_token_errors.any?
260
- if error == 'addon_suspended'
282
+ if error == 'addon_suspended' || errors.any? { |e| e["errorCode"] == INVALID_TOKEN_CODE && e['message'] == ADDON_NOT_INSTALLED }
261
283
  raise AddonSuspended
262
- elsif error == 'addon_not_installed'
284
+ elsif (error == 'addon_not_installed')
263
285
  raise AddonNotInstalled
264
286
  elsif errors.any? { |err| err["errorCode"] == 'invalid-token-no-rights' }
265
287
  raise InvalidTokenNoRights
288
+ elsif errors.any? { |err| err["errorCode"] == 'page-not-found' && err['message'].include?('max page is') }
289
+ raise MaxPageReached
266
290
  else
267
291
  raise Error.new result
268
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.9
4
+ version: 0.0.14
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-12 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