shoptet 0.0.23 → 0.0.28
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 +18 -1
- data/lib/shoptet/request.rb +18 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 39d32c0913a994e39a4886c159bedeb2c8d18a62e2c02d6d1934e49d5cbc4702
|
4
|
+
data.tar.gz: fc99b75ec8e3c0224dfd67d5783c447deb6b3de890558166c7ed1a41b50ed017
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
|
data/lib/shoptet/request.rb
CHANGED
@@ -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.
|
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-
|
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.
|
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
|