shoptet 0.0.34 → 0.0.38

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: 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