shoptet 0.0.32 → 0.0.36

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: d8ebaa8244bc4a4cba5afd3a9bb1347cb0cc96b9b74d91831b683a130278a417
4
- data.tar.gz: 17327086963c82f18cb128ed71bd8e00ea5c1d965c7d018357a21efa8c6acb91
3
+ metadata.gz: 9a952a3838551a382cce3b632cb70f632cd88444f543c6340fe1e36d1daf8190
4
+ data.tar.gz: 0a96835583b54aeb885b990e56868923415f19def7753f5fc5e726642dc0ce3b
5
5
  SHA512:
6
- metadata.gz: c56de1c106ae2a1d2d78379d05bdd4abd812a814cc1257613541563929dcad4b5385bed7713b07568692007ee4569549d5cd2667f15e12c90615ff87a454c650
7
- data.tar.gz: 520e8120f0b7837d088cbd0ac96061879d5fb794fe2aa4f4d4ee9bbb427fd7d60111374daed8c71faa90e97490e9a7e648eae55ac65a5c3d40d70254d1582f70
6
+ metadata.gz: f6ed9f6bb8eed36f8fa6f40fd8f96638e65eab9a850ab3ee7b028ed28e96b7bd324074b3589b8ef2ae4bf085c8c230487cbd7b0c8fe5373e653fb7c46f37cd4e
7
+ data.tar.gz: c008e134e5e8ce1a205a628f5480443fcacca09c75d6d3cdd77904a6f018e30d732750082a9014c2f0b7aef7685333fe91eac59b682cbe5d39e9fde3cfe8296e
@@ -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.get(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 }
@@ -24,13 +26,13 @@ class Shoptet
24
26
  end
25
27
 
26
28
  def first_page
27
- @first_page ||= @api.request(@base_url, @filters)
29
+ @first_page ||= @api.get(@base_url, @filters)
28
30
  end
29
31
 
30
32
  def last_page
31
33
  return first_page if total_pages < 2
32
34
 
33
- @last_page ||= @api.request(@base_url, @filters.merge(page: total_pages))
35
+ @last_page ||= @api.get(@base_url, @filters.merge(page: total_pages))
34
36
  end
35
37
 
36
38
  def total_pages
@@ -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,6 +38,34 @@ 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
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.32'
28
+ '0.0.36'
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
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.32
4
+ version: 0.0.36
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-29 00:00:00.000000000 Z
11
+ date: 2021-10-19 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