shoptet 0.0.23 → 0.0.28

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 +18 -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: fc8d869c6ef4b6751344e65f3a2e78cd481e2202cc3ce813887763c203a5bff8
4
- data.tar.gz: bf8d3f1755e53a53fdc4a1a1853ca34cedb155969abcfb2320bd9859e0961b77
3
+ metadata.gz: 39d32c0913a994e39a4886c159bedeb2c8d18a62e2c02d6d1934e49d5cbc4702
4
+ data.tar.gz: fc99b75ec8e3c0224dfd67d5783c447deb6b3de890558166c7ed1a41b50ed017
5
5
  SHA512:
6
- metadata.gz: ded272bb577be32901ff2c743ec9922542da6341ca25759cf463b71ac0ce9beae3d8b52468624e370ab64bc3fd12b4185584808d6d239aef6ba92bf85a796b60
7
- data.tar.gz: f24ec182b15b894c67410cec543490b65b512bbbada5cbdd0777c234e5ffcb4b5c5ab18464ff2fad6a322b7a27bd9c13a9c0400de793fe89128299a8a778aa3b
6
+ metadata.gz: 134155a8e5d780c772344f94a4cd1a1d82273bc714128b9a95b43ea83b816122e748cc59d4237d62e247af83dcdbf4ecb96b0a56620e60f931e58290dc58d35f
7
+ data.tar.gz: 169ed27569a934a8a5b19a042f0054412cc0c950c3a6f92a7048874eb2864bbb3b3fa5e33543d3412f8e4d798024fd4a26265facd332ad5d246317832ba252ef
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.23'
26
+ '0.0.28'
23
27
  end
24
28
 
25
29
  def self.ar_on_token_error(model)
@@ -168,6 +172,11 @@ class Shoptet
168
172
  result['data']
169
173
  end
170
174
 
175
+ def product_by_code code, api_params = {}
176
+ result = request("https://api.myshoptet.com/api/products/code/#{code}", api_params)
177
+ result['data']
178
+ end
179
+
171
180
  def new_api_token
172
181
  headers = { 'Authorization' => "Bearer #{@oauth_token}" }
173
182
 
@@ -229,6 +238,14 @@ class Shoptet
229
238
  raise AddonNotInstalled
230
239
  elsif errors.any? { |err| err["errorCode"] == 'invalid-token-no-rights' }
231
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
232
249
  elsif errors.any? { |err| err["errorCode"] == 'page-not-found' && err['message'].include?('max page is') }
233
250
  raise MaxPageReached
234
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 retries > 3
50
+
51
+ retries += 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.23
4
+ version: 0.0.28
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-22 00:00:00.000000000 Z
11
+ date: 2021-05-13 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.15
82
82
  signing_key:
83
83
  specification_version: 4
84
84
  summary: API wrapper for interacting with Shoptet api