shoptet 0.0.31 → 0.0.35

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: fdbf34faa0e1fa994b0c27da950e35159983d6bb31d827c4e45d7ff33c92a368
4
- data.tar.gz: abfd6916c1bebc36291583fc4826877016bc720ea5405cb7ad911acf183afba7
3
+ metadata.gz: 834618535e5ec061b17899047e826cb4258cbcd1f162efba35dbd73201947eb8
4
+ data.tar.gz: 5b5cf393befc33bee8bf68f6352bb4a4e63d26b33c9d1d0fa5b3d01a02614340
5
5
  SHA512:
6
- metadata.gz: d336ee1c684eb1018cc9a9a643997240928eb649116519a0bfd6ac443e55b90dccef90073b9c5b453352db219da9747d5f82c64745e7f171ba1e130c2a661118
7
- data.tar.gz: 251688ec6650ce6629a91c9d256f309eeee928c019b1cee1cd57264c9e8e8b88de3fca11ed18181889e357423fe1b61861279b35a405bacee534613ee0d942b9
6
+ metadata.gz: a4478297d6958d02c4c647ed1b568b2da7748e774764625477179a029d04feacbd9ce80d3f6cc36d094b3ec2d2e511ce2281aec7658b15e5a0f4e21060a061b4
7
+ data.tar.gz: 52393d9a48043fac3485b4f99ca8b1c807987df18a50bf6abc9686b6ed850f1b24613e29c8beb5a2b20184bc3268c37ac9110f3102c95d161c356f4a5440c2ce
data/lib/shoptet.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'delegate'
2
4
  require_relative 'shoptet/request'
3
5
  require_relative 'shoptet/api_enumerator'
@@ -23,7 +25,7 @@ class Shoptet
23
25
  end
24
26
 
25
27
  def self.version
26
- '0.0.31'
28
+ '0.0.35'
27
29
  end
28
30
 
29
31
  def self.ar_on_token_error(model)
@@ -111,12 +113,12 @@ class Shoptet
111
113
  end
112
114
 
113
115
  def shop_info api_params = {}
114
- result = request('https://api.myshoptet.com/api/eshop', api_params)
116
+ result = get('https://api.myshoptet.com/api/eshop', api_params)
115
117
  result['data']
116
118
  end
117
119
 
118
120
  def design_info api_params = {}
119
- result = request('https://api.myshoptet.com/api/eshop/design', api_params)
121
+ result = get('https://api.myshoptet.com/api/eshop/design', api_params)
120
122
 
121
123
  result['data']
122
124
  end
@@ -163,17 +165,32 @@ class Shoptet
163
165
  end
164
166
 
165
167
  def order code, api_params = {}
166
- result = request("https://api.myshoptet.com/api/orders/#{code}", api_params)
168
+ result = get("https://api.myshoptet.com/api/orders/#{code}", api_params)
167
169
  result.dig('data', 'order')
168
170
  end
169
171
 
170
172
  def product guid, api_params = {}
171
- result = request("https://api.myshoptet.com/api/products/#{guid}", api_params)
173
+ result = get("https://api.myshoptet.com/api/products/#{guid}", api_params)
172
174
  result['data']
173
175
  end
174
176
 
175
177
  def product_by_code code, api_params = {}
176
- result = request("https://api.myshoptet.com/api/products/code/#{code}", api_params)
178
+ result = get("https://api.myshoptet.com/api/products/code/#{code}", api_params)
179
+ result['data']
180
+ end
181
+
182
+ def template_includes
183
+ result = get('https://api.myshoptet.com/api/template-include')
184
+ result['data']
185
+ end
186
+
187
+ def set_templates(data)
188
+ result = post_binary('https://api.myshoptet.com/api/template-include', data)
189
+ result['data']
190
+ end
191
+
192
+ def delete_template(location)
193
+ result = delete("https://api.myshoptet.com/api/template-include/#{location}")
177
194
  result['data']
178
195
  end
179
196
 
@@ -186,7 +203,7 @@ class Shoptet
186
203
  result.fetch('access_token')
187
204
  end
188
205
 
189
- def request url, api_params = {}, retry_on_token_error = true
206
+ def get url, api_params = {}, retry_on_token_error = true
190
207
  url = URI(url)
191
208
  url.query = URI.encode_www_form(api_params) if api_params.any?
192
209
 
@@ -199,7 +216,45 @@ class Shoptet
199
216
  if token_errors.any?
200
217
  if retry_on_token_error
201
218
  @on_token_error.call(self)
202
- request(url, api_params, false)
219
+ get(url, api_params, false)
220
+ else
221
+ raise Error.new(result)
222
+ end
223
+ else
224
+ result
225
+ end
226
+ end
227
+
228
+ def post_binary(url, data, retry_on_token_error = true)
229
+ url = URI(url)
230
+ headers = { 'Shoptet-Access-Token' => @api_token,
231
+ 'Content-Type' => 'application/vnd.shoptet.v1.0' }
232
+ result = Shoptet::Request.post_binary(url, data, headers)
233
+ token_errors = handle_errors(result)
234
+
235
+ if token_errors.any?
236
+ if retry_on_token_error
237
+ @on_token_error.call(self)
238
+ post_binary(url, data, false)
239
+ else
240
+ raise Error.new(result)
241
+ end
242
+ else
243
+ result
244
+ end
245
+ end
246
+
247
+ def delete(url, retry_on_token_error = true)
248
+ url = URI(url)
249
+ headers = { 'Shoptet-Access-Token' => @api_token,
250
+ 'Content-Type' => 'application/vnd.shoptet.v1.0' }
251
+ result = Shoptet::Request.delete(url, headers)
252
+ token_errors = handle_errors(result)
253
+
254
+ if token_errors.any?
255
+ if retry_on_token_error
256
+ @on_token_error.call(self)
257
+ delete(url, false)
203
258
  else
204
259
  raise Error.new(result)
205
260
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Shoptet
2
4
  class ApiEnumerator < SimpleDelegator
3
5
  def initialize base_url, filters, data_key, api
@@ -10,10 +12,10 @@ class Shoptet
10
12
  first_page.dig('data', @data_key).each { y.yield _1 }
11
13
 
12
14
  if total_pages > 1
13
- other_pages = 2..(total_pages - 1)
14
- other_pages.each do |page|
15
- result = @api.request(base_url, filters.merge(page: page))
16
- result.dig('data', @data_key).each { y.yield _1 }
15
+ (2..(total_pages - 1)).each do |page|
16
+ @api.request(base_url, filters.merge(page: page))
17
+ .dig('data', @data_key)
18
+ .each { y.yield _1 }
17
19
  end
18
20
 
19
21
  last_page.dig('data', @data_key).each { y.yield _1 }
@@ -6,10 +6,10 @@ class Shoptet
6
6
  def self.get url, headers
7
7
  http = Net::HTTP.new(url.host, url.port)
8
8
  http.use_ssl = true
9
- http.open_timeout = 5
10
- http.read_timeout = 5
11
- http.write_timeout = 5
12
- http.ssl_timeout = 5
9
+ http.open_timeout = 30
10
+ http.read_timeout = 30
11
+ http.write_timeout = 30
12
+ http.ssl_timeout = 30
13
13
 
14
14
  request = Net::HTTP::Get.new(url)
15
15
  headers.each do |key, value|
@@ -38,19 +38,41 @@ class Shoptet
38
38
  JSON.parse(response.body)
39
39
  end
40
40
 
41
+ def self.post_binary(url, body, headers)
42
+ request = Net::HTTP::Post.new(url)
43
+ request.body = body
44
+ request.content_type = 'appliaction/octet-stream'
45
+ headers.each do |key, value|
46
+ request[key] = value
47
+ end
48
+
49
+ response = Net::HTTP.start(url.host, url.port, use_ssl: true) do |http|
50
+ handle_net_timeouts { http.request(request) }
51
+ end
52
+
53
+ JSON.parse(response.body)
54
+ end
55
+
56
+ def self.delete(url, headers)
57
+ request = Net::HTTP::Delete.new(url)
58
+ headers.each do |key, value|
59
+ request[key] = value
60
+ end
61
+
62
+ response = Net::HTTP.start(url.host, url.port, use_ssl: true) do |http|
63
+ handle_net_timeouts { http.request(request) }
64
+ end
65
+
66
+ JSON.parse(response.body)
67
+ end
68
+
41
69
  private
42
70
 
43
71
  def self.handle_net_timeouts
44
- attempts = 0
45
-
46
72
  begin
47
73
  yield
48
74
  rescue Net::OpenTimeout
49
- raise if attempts > 3
50
-
51
- attempts += 1
52
-
53
- retry
75
+ yield
54
76
  end
55
77
  end
56
78
  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.31
4
+ version: 0.0.35
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-05-15 00:00:00.000000000 Z
11
+ date: 2021-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: irb