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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 94aaeb044be3d937c013893b263fd6fcf48eec3267737e57a72a0a972e8193b8
4
- data.tar.gz: 5a86aea9a7a8caf2e3eb93146cc92cf6d14e54adbc910079b11243ae892b7f6b
3
+ metadata.gz: 5ede476afaaef3f23624e03d877406c5777852fcb3310cef0610278a2d8e26f6
4
+ data.tar.gz: b7bfd1c1f6ae85fc5959769d5155be2e77cc157ec9e93e88adebd09789c60240
5
5
  SHA512:
6
- metadata.gz: 06def3df961091c2000bc13eb685a9507096c53256f57bd2faf7e9991eab09dbec9b3d43131310d303403cec8315688bd9a9dc559f45e03e90f4476f27780528
7
- data.tar.gz: 763669ff9ee09302d24d379dd0c3901084425511b6878d902e28e30c0e572bedf25f9b698f5bc89163c59811cbf31ee4af6b2e1f65b3fa25db5dd917ea9abd2b
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.request(base_url, filters.merge(page: page))
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.request(@base_url, @filters)
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.request(@base_url, @filters.merge(page: total_pages))
35
+ @last_page ||= @api.get(@base_url, @filters.merge(page: total_pages))
36
36
  end
37
37
 
38
38
  def total_pages
@@ -27,7 +27,7 @@ class Shoptet
27
27
  parsed_body
28
28
  end
29
29
 
30
- def self.post url, body
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.34'
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 = request('https://api.myshoptet.com/api/eshop', api_params)
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 = request('https://api.myshoptet.com/api/eshop/design', api_params)
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 = request("https://api.myshoptet.com/api/orders/#{code}", api_params)
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 = request("https://api.myshoptet.com/api/products/#{guid}", api_params)
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 = request("https://api.myshoptet.com/api/products/code/#{code}", api_params)
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 request url, api_params = {}, retry_on_token_error = true
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
- request(url, api_params, false)
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.34
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-06-28 00:00:00.000000000 Z
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.15
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