shoptet 0.0.5 → 0.0.6

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: 8f8ef4e3ca1fad89c2736773c9ed8d85d579c0f065a87f77f78f19010f4626c6
4
- data.tar.gz: aad9e4adc1d9c73126f97638c90897cf067e3db8b129bcad13631f1a9b81eaad
3
+ metadata.gz: 6d9c548dd730e3b59fb8ae843dab0fdae19b4779c27042c0aa5f01bed576cc88
4
+ data.tar.gz: 610aee2527b42a799c771b172a1fa54b942b5d0823080f2f2761271ce8efd6dc
5
5
  SHA512:
6
- metadata.gz: a4ad0b4003782abde395644bc8a981b72a69a43c84676bae4bbf4bef09fec1161d194cdd2e6e6df72bb711fe28c0ac4c1612619945542308428144e945b6ed77
7
- data.tar.gz: 9b085d8e2a808cb4ef80c7f27b89c6d9b801abfa715d9586c86df0f8138115592b7c0270a614d1b35482d8d596d7cc37e6d01d73f00ca73406fd817703cf9aff
6
+ metadata.gz: 334fc975ad12a81db120372b3478369db2ed4c67df97e7bbc6cd62f2fe875e1f39f2366ee8f82330edd80e517eb592cf3962491d5328aeaf9cb67a72b3d41352
7
+ data.tar.gz: c627078af8708d7ad6beec828d1e19ff22e6e088042e1fd09d67c4ae86307e4e76093499e7041ac096d0326400157681121ffb5c8e5618f9de9299e824701ff1
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  # Shoptet
2
2
 
3
- This is Ruby API wrapper for [Shoptet API](https://developers.shoptet.com/) which provides access to e-shop data for addon developers.
4
-
5
- This is currently under development and hasn't been released to Rubygems yet.
3
+ This is Ruby API wrapper for [Shoptet API](https://shoptet.docs.apiary.io) which provides access to e-shop data for addon developers.
6
4
 
7
5
  # How to install
8
6
 
@@ -82,6 +80,7 @@ Also they accept hash with params which will be passed to Shoptet api. Through t
82
80
  ## Other
83
81
 
84
82
  * `Shoptet#new_api_token` - this returns new api token created with oauth token
83
+ * `Shoptet::install` - TODO
85
84
 
86
85
  ## License
87
86
 
@@ -1,15 +1,7 @@
1
1
  require_relative 'shoptet/request'
2
2
 
3
3
  class Shoptet
4
- class Error < StandardError
5
- #TODO: check that this works
6
- attr_reader :additional_data
7
-
8
- def initialize message, additional_data = {}
9
- super(message)
10
- @additional_data = additional_data
11
- end
12
- end
4
+ class Error < StandardError; end
13
5
  class AddonSuspended < StandardError; end
14
6
  class AddonNotInstalled < StandardError; end
15
7
  class InvalidTokenNoRights < StandardError; end
@@ -19,7 +11,7 @@ class Shoptet
19
11
  end
20
12
 
21
13
  def self.version
22
- '0.0.5'
14
+ '0.0.6'
23
15
  end
24
16
 
25
17
  def self.ar_on_token_error(model)
@@ -39,6 +31,19 @@ class Shoptet
39
31
  end
40
32
  end
41
33
 
34
+ def self.install uri, redirect_uri, client_id, client_secret, code
35
+ data = {
36
+ 'redirect_uri' => redirect_uri,
37
+ 'client_id' => client_id,
38
+ 'client_secret' => client_secret,
39
+ 'code' => code,
40
+ 'grant_type' => 'authorization_code',
41
+ 'scope' => 'api'
42
+ }
43
+
44
+ Shoptet::Request.post uri, data
45
+ end
46
+
42
47
  attr_accessor :api_token
43
48
 
44
49
  def initialize(oauth_url, oauth_token, api_token = nil, on_token_error = nil)
@@ -50,14 +55,17 @@ class Shoptet
50
55
 
51
56
  #TODO: return ['data'] already
52
57
  def shop_info api_params = {}
53
- request 'https://api.myshoptet.com/api/eshop'
58
+ result = request 'https://api.myshoptet.com/api/eshop'
59
+ result['data']
54
60
  end
55
61
 
56
62
  def design_info api_params = {}
57
- request 'https://api.myshoptet.com/api/eshop/design'
63
+ result = request 'https://api.myshoptet.com/api/eshop/design'
64
+
65
+ result['data']
58
66
  end
59
67
 
60
- def warehouses api_params = {}
68
+ def stocks api_params = {}
61
69
  enumerize 'https://api.myshoptet.com/api/stocks', api_params
62
70
  end
63
71
 
@@ -70,6 +78,11 @@ class Shoptet
70
78
  enumerize uri, api_params
71
79
  end
72
80
 
81
+ def stocks_movements warehouse_id, api_params = {}
82
+ uri = "https://api.myshoptet.com/api/stocks/#{warehouse_id}/movements"
83
+ enumerize uri, api_params
84
+ end
85
+
73
86
  def product_categories api_params = {}
74
87
  enumerize 'https://api.myshoptet.com/api/categories', api_params
75
88
  end
@@ -100,13 +113,13 @@ class Shoptet
100
113
  def order code, api_params = {}
101
114
  uri = "https://api.myshoptet.com/api/orders/#{code}"
102
115
  result = request assemble_uri(uri, api_params)
103
- result.dig('data', 'order')
116
+ result.dig 'data', 'order'
104
117
  end
105
118
 
106
119
  def product guid, api_params = {}
107
120
  uri = "https://api.myshoptet.com/api/products/#{guid}"
108
121
  result = request assemble_uri(uri, api_params)
109
- result.dig('data')
122
+ result['data']
110
123
  end
111
124
 
112
125
  def new_api_token
@@ -179,28 +192,10 @@ class Shoptet
179
192
  elsif errors.any? { |err| err["errorCode"] == 'invalid-token-no-rights' }
180
193
  raise InvalidTokenNoRights
181
194
  else
182
- additional_data = {
183
- uri: uri,
184
- headers: scrub_sensitive_headers(headers)
185
- }
186
-
187
- raise Error.new result, additional_data
195
+ raise Error.new result
188
196
  end
189
197
  end
190
198
 
191
199
  token_errors
192
200
  end
193
-
194
- def scrub_sensitive_headers headers
195
- scrubbed = {}
196
-
197
- to_scrub = ['Shoptet-Access-Token', 'Authorization']
198
- to_scrub.each do |header|
199
- if headers[header]
200
- scrubbed[header] = "#{headers[header][0..20]}..."
201
- end
202
- end
203
-
204
- headers.merge scrubbed
205
- end
206
201
  end
@@ -28,5 +28,16 @@ class Shoptet
28
28
  rescue Net::OpenTimeout
29
29
  retry if attempt < 4
30
30
  end
31
+
32
+ def self.post uri, body
33
+ req = Net::HTTP::Post.new uri
34
+ req.set_form_data body
35
+
36
+ res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
37
+ http.request req
38
+ end
39
+
40
+ JSON.parse res.body
41
+ end
31
42
  end
32
43
  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.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Premysl Donat
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-09 00:00:00.000000000 Z
11
+ date: 2020-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: irb