shoptet 0.0.25 → 0.0.30

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: df7f60fd4783c4575ed4d5655d64c8dc6059bedbbfd617799b75bc39179c42a2
4
- data.tar.gz: 45f65ff7f49e34929f2517776b98168d46ada03b9c51537299740a1342a6ac18
3
+ metadata.gz: 671a3a74eccf368f260d0cf4706cb1ba166012164bb44460f66713e9dde87998
4
+ data.tar.gz: 37a1695eb6a8a84479169399d02663792c17dc15ffe0fb735ecf5a413a38e82e
5
5
  SHA512:
6
- metadata.gz: 638f26a2866195b498176e89ec3c975f39218bb3e7c5720db75b1c8f6193a8e6390556dfdc090670e6148e6c532eb12f682a790b4c0bab81720fbe5cbe69ad91
7
- data.tar.gz: 56a94a9e122ff6385b8bebcdb15abe279754d7b8253023ef1ab7a8ce235dfc8af6bb00dd44017e22f311b1dae5b54f26be8e527ffa0ff6095650cfbdeb2e395b
6
+ metadata.gz: 7572c405b6db590e09e16a2232f5925c883964ec7d06ca009e1e7056494eb44fcb8e35513d460cc0d0c17066b7997c823f6960c2f2b59bfa77b65ced9dba4694
7
+ data.tar.gz: 80f326ab967e6641513d30791c1b140ab952a1df4552c446809ce469857181e657b322640fd60d3eaefe4c65097f60d83af3d333ec46df291340e16b532f8fff
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shoptet (0.0.19)
4
+ shoptet (0.0.29)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/lib/shoptet.rb CHANGED
@@ -10,6 +10,9 @@ class Shoptet
10
10
  class EmptyResponse < StandardError; end
11
11
  class MaxPageReached < StandardError; end
12
12
  class StockNotFound < StandardError; end
13
+ class ProductNotFound < StandardError; end
14
+ class SystemMaintenance < StandardError; end
15
+ class UnknownError < StandardError; end
13
16
 
14
17
  EXPIRED_TOKEN_CODE = 'expired-token'
15
18
  INVALID_TOKEN_CODE = 'invalid-token'
@@ -20,7 +23,7 @@ class Shoptet
20
23
  end
21
24
 
22
25
  def self.version
23
- '0.0.25'
26
+ '0.0.30'
24
27
  end
25
28
 
26
29
  def self.ar_on_token_error(model)
@@ -237,6 +240,12 @@ class Shoptet
237
240
  raise InvalidTokenNoRights
238
241
  elsif errors.any? { |err| err["errorCode"] == 'stock-not-found' }
239
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
240
249
  elsif errors.any? { |err| err["errorCode"] == 'page-not-found' && err['message'].include?('max page is') }
241
250
  raise MaxPageReached
242
251
  else
@@ -1,5 +1,5 @@
1
1
  require 'net/http'
2
- require 'oj'
2
+ require 'json'
3
3
 
4
4
  class Shoptet
5
5
  class Request
@@ -16,8 +16,8 @@ class Shoptet
16
16
  request[key] = value
17
17
  end
18
18
 
19
- response = http.request(request)
20
- parsed_body = Oj.load(response.body, mode: :compat)
19
+ response = handle_net_timeouts { http.request(request) }
20
+ parsed_body = JSON.parse(response.body)
21
21
 
22
22
  unless parsed_body
23
23
  message = "Status code: #{response.code}, url: #{url}"
@@ -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
- Oj.load(response.body, mode: :compat)
38
+ JSON.parse(response.body)
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
39
55
  end
40
56
  end
41
57
  end
data/shoptet.gemspec CHANGED
@@ -22,7 +22,5 @@ Gem::Specification.new do |spec|
22
22
  end
23
23
  spec.require_paths = ["lib"]
24
24
 
25
- spec.add_dependency 'oj'
26
-
27
25
  spec.add_development_dependency 'irb'
28
26
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shoptet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.25
4
+ version: 0.0.30
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-04-28 00:00:00.000000000 Z
11
+ date: 2021-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: oj
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: irb
29
15
  requirement: !ruby/object:Gem::Requirement