shoptet 0.0.34 → 0.0.38
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/api_enumerator.rb +3 -3
- data/lib/shoptet/request.rb +32 -1
- data/lib/shoptet.rb +62 -8
- 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: 5ede476afaaef3f23624e03d877406c5777852fcb3310cef0610278a2d8e26f6
|
|
4
|
+
data.tar.gz: b7bfd1c1f6ae85fc5959769d5155be2e77cc157ec9e93e88adebd09789c60240
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 118493a56fa482d1f89a431c7bbdf2f415728aa16934be5c463aa1173f3efecf31542536ed860757ece557e256039cd1e885b4b4364fd8cf1183c9f0cf2724d7
|
|
7
|
+
data.tar.gz: 29786e3222d899086fa512397e148a5706acc47a85adc822ab0b6948008728767184976306ce068630080c44a79198f49b41aa8e467b54ff9ddcfd01d4c1531b
|
|
@@ -13,7 +13,7 @@ class Shoptet
|
|
|
13
13
|
|
|
14
14
|
if total_pages > 1
|
|
15
15
|
(2..(total_pages - 1)).each do |page|
|
|
16
|
-
@api.
|
|
16
|
+
@api.get(base_url, filters.merge(page: page))
|
|
17
17
|
.dig('data', @data_key)
|
|
18
18
|
.each { y.yield _1 }
|
|
19
19
|
end
|
|
@@ -26,13 +26,13 @@ class Shoptet
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def first_page
|
|
29
|
-
@first_page ||= @api.
|
|
29
|
+
@first_page ||= @api.get(@base_url, @filters)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def last_page
|
|
33
33
|
return first_page if total_pages < 2
|
|
34
34
|
|
|
35
|
-
@last_page ||= @api.
|
|
35
|
+
@last_page ||= @api.get(@base_url, @filters.merge(page: total_pages))
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
def total_pages
|
data/lib/shoptet/request.rb
CHANGED
|
@@ -27,7 +27,7 @@ class Shoptet
|
|
|
27
27
|
parsed_body
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
def self.post
|
|
30
|
+
def self.post(url, body)
|
|
31
31
|
request = Net::HTTP::Post.new(url)
|
|
32
32
|
request.set_form_data(body)
|
|
33
33
|
|
|
@@ -35,6 +35,37 @@ class Shoptet
|
|
|
35
35
|
handle_net_timeouts { http.request(request) }
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
+
JSON.parse(response.body)
|
|
39
|
+
rescue JSON::ParserError => e
|
|
40
|
+
message = "Original message: #{e.message}, response body: #{response.body}"
|
|
41
|
+
fail Shoptet::NonJSONResponse.new(message)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def self.post_binary(url, body, headers)
|
|
45
|
+
request = Net::HTTP::Post.new(url)
|
|
46
|
+
request.body = body
|
|
47
|
+
request.content_type = 'appliaction/octet-stream'
|
|
48
|
+
headers.each do |key, value|
|
|
49
|
+
request[key] = value
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
response = Net::HTTP.start(url.host, url.port, use_ssl: true) do |http|
|
|
53
|
+
handle_net_timeouts { http.request(request) }
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
JSON.parse(response.body)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def self.delete(url, headers)
|
|
60
|
+
request = Net::HTTP::Delete.new(url)
|
|
61
|
+
headers.each do |key, value|
|
|
62
|
+
request[key] = value
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
response = Net::HTTP.start(url.host, url.port, use_ssl: true) do |http|
|
|
66
|
+
handle_net_timeouts { http.request(request) }
|
|
67
|
+
end
|
|
68
|
+
|
|
38
69
|
JSON.parse(response.body)
|
|
39
70
|
end
|
|
40
71
|
|
data/lib/shoptet.rb
CHANGED
|
@@ -15,6 +15,7 @@ class Shoptet
|
|
|
15
15
|
class ProductNotFound < StandardError; end
|
|
16
16
|
class SystemMaintenance < StandardError; end
|
|
17
17
|
class UnknownError < StandardError; end
|
|
18
|
+
class NonJSONResponse < StandardError; end
|
|
18
19
|
|
|
19
20
|
EXPIRED_TOKEN_CODE = 'expired-token'
|
|
20
21
|
INVALID_TOKEN_CODE = 'invalid-token'
|
|
@@ -25,7 +26,7 @@ class Shoptet
|
|
|
25
26
|
end
|
|
26
27
|
|
|
27
28
|
def self.version
|
|
28
|
-
'0.0.
|
|
29
|
+
'0.0.38'
|
|
29
30
|
end
|
|
30
31
|
|
|
31
32
|
def self.ar_on_token_error(model)
|
|
@@ -113,12 +114,12 @@ class Shoptet
|
|
|
113
114
|
end
|
|
114
115
|
|
|
115
116
|
def shop_info api_params = {}
|
|
116
|
-
result =
|
|
117
|
+
result = get('https://api.myshoptet.com/api/eshop', api_params)
|
|
117
118
|
result['data']
|
|
118
119
|
end
|
|
119
120
|
|
|
120
121
|
def design_info api_params = {}
|
|
121
|
-
result =
|
|
122
|
+
result = get('https://api.myshoptet.com/api/eshop/design', api_params)
|
|
122
123
|
|
|
123
124
|
result['data']
|
|
124
125
|
end
|
|
@@ -165,17 +166,32 @@ class Shoptet
|
|
|
165
166
|
end
|
|
166
167
|
|
|
167
168
|
def order code, api_params = {}
|
|
168
|
-
result =
|
|
169
|
+
result = get("https://api.myshoptet.com/api/orders/#{code}", api_params)
|
|
169
170
|
result.dig('data', 'order')
|
|
170
171
|
end
|
|
171
172
|
|
|
172
173
|
def product guid, api_params = {}
|
|
173
|
-
result =
|
|
174
|
+
result = get("https://api.myshoptet.com/api/products/#{guid}", api_params)
|
|
174
175
|
result['data']
|
|
175
176
|
end
|
|
176
177
|
|
|
177
178
|
def product_by_code code, api_params = {}
|
|
178
|
-
result =
|
|
179
|
+
result = get("https://api.myshoptet.com/api/products/code/#{code}", api_params)
|
|
180
|
+
result['data']
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
def template_includes
|
|
184
|
+
result = get('https://api.myshoptet.com/api/template-include')
|
|
185
|
+
result['data']
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
def set_templates(data)
|
|
189
|
+
result = post_binary('https://api.myshoptet.com/api/template-include', data)
|
|
190
|
+
result['data']
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def delete_template(location)
|
|
194
|
+
result = delete("https://api.myshoptet.com/api/template-include/#{location}")
|
|
179
195
|
result['data']
|
|
180
196
|
end
|
|
181
197
|
|
|
@@ -188,7 +204,7 @@ class Shoptet
|
|
|
188
204
|
result.fetch('access_token')
|
|
189
205
|
end
|
|
190
206
|
|
|
191
|
-
def
|
|
207
|
+
def get(url, api_params = {}, retry_on_token_error = true)
|
|
192
208
|
url = URI(url)
|
|
193
209
|
url.query = URI.encode_www_form(api_params) if api_params.any?
|
|
194
210
|
|
|
@@ -201,7 +217,45 @@ class Shoptet
|
|
|
201
217
|
if token_errors.any?
|
|
202
218
|
if retry_on_token_error
|
|
203
219
|
@on_token_error.call(self)
|
|
204
|
-
|
|
220
|
+
get(url, api_params, false)
|
|
221
|
+
else
|
|
222
|
+
raise Error.new(result)
|
|
223
|
+
end
|
|
224
|
+
else
|
|
225
|
+
result
|
|
226
|
+
end
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
def post_binary(url, data, retry_on_token_error = true)
|
|
230
|
+
url = URI(url)
|
|
231
|
+
headers = { 'Shoptet-Access-Token' => @api_token,
|
|
232
|
+
'Content-Type' => 'application/vnd.shoptet.v1.0' }
|
|
233
|
+
result = Shoptet::Request.post_binary(url, data, headers)
|
|
234
|
+
token_errors = handle_errors(result)
|
|
235
|
+
|
|
236
|
+
if token_errors.any?
|
|
237
|
+
if retry_on_token_error
|
|
238
|
+
@on_token_error.call(self)
|
|
239
|
+
post_binary(url, data, false)
|
|
240
|
+
else
|
|
241
|
+
raise Error.new(result)
|
|
242
|
+
end
|
|
243
|
+
else
|
|
244
|
+
result
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
def delete(url, retry_on_token_error = true)
|
|
249
|
+
url = URI(url)
|
|
250
|
+
headers = { 'Shoptet-Access-Token' => @api_token,
|
|
251
|
+
'Content-Type' => 'application/vnd.shoptet.v1.0' }
|
|
252
|
+
result = Shoptet::Request.delete(url, headers)
|
|
253
|
+
token_errors = handle_errors(result)
|
|
254
|
+
|
|
255
|
+
if token_errors.any?
|
|
256
|
+
if retry_on_token_error
|
|
257
|
+
@on_token_error.call(self)
|
|
258
|
+
delete(url, false)
|
|
205
259
|
else
|
|
206
260
|
raise Error.new(result)
|
|
207
261
|
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.38
|
|
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-10-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: irb
|
|
@@ -64,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
64
64
|
- !ruby/object:Gem::Version
|
|
65
65
|
version: '0'
|
|
66
66
|
requirements: []
|
|
67
|
-
rubygems_version: 3.2.
|
|
67
|
+
rubygems_version: 3.2.21
|
|
68
68
|
signing_key:
|
|
69
69
|
specification_version: 4
|
|
70
70
|
summary: API wrapper for interacting with Shoptet api
|