shoptet 0.0.24 → 0.0.29

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 +13 -1
  3. data/lib/shoptet/request.rb +18 -2
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c47eb6556f7edaf410be790e1e34d50a688f4e7e985b7c3ba13f1025534cbce6
4
- data.tar.gz: 327dcd29816c88ba5c3657c5d4a9ca7d73fa5befc940226b669572f46666a562
3
+ metadata.gz: 866b74c908239757de5a5dde121f939888c1b3308a7bcf83496af4882bda642a
4
+ data.tar.gz: bdbea0cb42f72f45d0b3021e292820c536ca4fd7ac228a756836ae4820e84626
5
5
  SHA512:
6
- metadata.gz: 91cd6589e4a09aab0480f55807ae6e8ab8c256af0018753087f77f195cc8e06fb007774106586942ec90485f90804e02a48fe99857cf41ecb05ac1afe41b5bd8
7
- data.tar.gz: f364707ed6c8c1a3c2381837f41e1b783a2d8902768d48bfd3762e50b4cd109b7ea6530898a38e2cf6c6984c543c8c4a12dd653d2a09679fcdd57831c84c43db
6
+ metadata.gz: 4e17a88fa2c52bae48d3b933ff99c35a6ceffbebb690b1798c7c8da02989f1e9fb1c8ddbdea65dc2b69f56133b87da3180b9efa764fea0078272aa7c329ddd66
7
+ data.tar.gz: 9cdfcc94049272e0a5a4ca81e283166b4579a35e5f47b2d8586b3ce0138916142f5f02c6ca3ff9515cba34232f1074d9d1a51d706815ed180e331fc3319b51d4
data/lib/shoptet.rb CHANGED
@@ -9,6 +9,10 @@ class Shoptet
9
9
  class InvalidTokenNoRights < StandardError; end
10
10
  class EmptyResponse < StandardError; end
11
11
  class MaxPageReached < StandardError; end
12
+ class StockNotFound < StandardError; end
13
+ class ProductNotFound < StandardError; end
14
+ class SystemMaintenance < StandardError; end
15
+ class UnknownError < StandardError; end
12
16
 
13
17
  EXPIRED_TOKEN_CODE = 'expired-token'
14
18
  INVALID_TOKEN_CODE = 'invalid-token'
@@ -19,7 +23,7 @@ class Shoptet
19
23
  end
20
24
 
21
25
  def self.version
22
- '0.0.24'
26
+ '0.0.29'
23
27
  end
24
28
 
25
29
  def self.ar_on_token_error(model)
@@ -234,6 +238,14 @@ class Shoptet
234
238
  raise AddonNotInstalled
235
239
  elsif errors.any? { |err| err["errorCode"] == 'invalid-token-no-rights' }
236
240
  raise InvalidTokenNoRights
241
+ elsif errors.any? { |err| err["errorCode"] == 'stock-not-found' }
242
+ raise StockNotFound
243
+ elsif errors.any? { |err| err["errorCode"] == 'product-not-found' }
244
+ raise ProductNotFound
245
+ elsif errors.any? { |err| err["errorCode"] == 'system-maintenance' }
246
+ raise SystemMaintenance
247
+ elsif errors.any? { |err| err["errorCode"] == 'unknown-error' }
248
+ raise UnknownError
237
249
  elsif errors.any? { |err| err["errorCode"] == 'page-not-found' && err['message'].include?('max page is') }
238
250
  raise MaxPageReached
239
251
  else
@@ -16,7 +16,7 @@ class Shoptet
16
16
  request[key] = value
17
17
  end
18
18
 
19
- response = http.request(request)
19
+ response = handle_net_timeouts { http.request(request) }
20
20
  parsed_body = Oj.load(response.body, mode: :compat)
21
21
 
22
22
  unless parsed_body
@@ -32,10 +32,26 @@ class Shoptet
32
32
  request.set_form_data(body)
33
33
 
34
34
  response = Net::HTTP.start(url.host, url.port, use_ssl: true) do |http|
35
- http.request(request)
35
+ handle_net_timeouts { http.request(request) }
36
36
  end
37
37
 
38
38
  Oj.load(response.body, mode: :compat)
39
39
  end
40
+
41
+ private
42
+
43
+ def self.handle_net_timeouts
44
+ attempts = 0
45
+
46
+ begin
47
+ yield
48
+ rescue Net::OpenTimeout
49
+ raise if attempts > 3
50
+
51
+ attempts += 1
52
+
53
+ retry
54
+ end
55
+ end
40
56
  end
41
57
  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.24
4
+ version: 0.0.29
5
5
  platform: ruby
6
6
  authors:
7
7
  - Premysl Donat
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-25 00:00:00.000000000 Z
11
+ date: 2021-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -78,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
78
  - !ruby/object:Gem::Version
79
79
  version: '0'
80
80
  requirements: []
81
- rubygems_version: 3.1.4
81
+ rubygems_version: 3.2.13
82
82
  signing_key:
83
83
  specification_version: 4
84
84
  summary: API wrapper for interacting with Shoptet api