retailcrm 1.0.0 → 1.0.1
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 +4 -4
- data/lib/retailcrm.rb +89 -57
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5892ff6239b7f32f4734350c0594c3aca0d2b542
|
4
|
+
data.tar.gz: e51a74e3dca2008a92a786850608ab13f7973d76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1138c399ba37c527d18b7f8be73b507ac171c5cd15cb43962c0a387f98f190fa0634965de25d13caae0836a924d06c7a12acd5e98f4009fe7f129da886a05df0
|
7
|
+
data.tar.gz: f9e3ad55a0c60f4fe1ef8f3f6c98e5594f98a5c23f709305c52539623e2efd1b034b7007b5db671ccaca6d8f4855e04fdd0850840fc09cb4a80a183d1e75c69f
|
data/lib/retailcrm.rb
CHANGED
@@ -13,6 +13,8 @@ class Retailcrm
|
|
13
13
|
@rr_url = "#{url}/api/v#{@rr_version}/"
|
14
14
|
@rr_key = key
|
15
15
|
@rr_params = { :apiKey => @rr_key }
|
16
|
+
@filter = nil
|
17
|
+
@ids = nil
|
16
18
|
end
|
17
19
|
|
18
20
|
##
|
@@ -20,19 +22,35 @@ class Retailcrm
|
|
20
22
|
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
|
21
23
|
#
|
22
24
|
# Example:
|
23
|
-
# >> Retailcrm.orders(
|
25
|
+
# >> Retailcrm.orders({:email => 'test@example.com', :status => 'new'}, 50, 2)
|
24
26
|
# => {...}
|
25
27
|
#
|
26
28
|
# Arguments:
|
29
|
+
# filter (Hash)
|
27
30
|
# limit (Integer) (20|50|100)
|
28
31
|
# page (Integer)
|
29
|
-
|
30
|
-
def orders(filter = {}, limit = 20, page = 1)
|
32
|
+
def orders(filter = nil, limit = 20, page = 1)
|
31
33
|
url = "#{@rr_url}orders"
|
32
34
|
@rr_params[:limit] = limit
|
33
35
|
@rr_params[:page] = page
|
34
|
-
@
|
35
|
-
|
36
|
+
@filter = filter.to_a.map { |x| "filter[#{x[0]}]=#{x[1]}" }.join("&")
|
37
|
+
make_request(url)
|
38
|
+
end
|
39
|
+
|
40
|
+
##
|
41
|
+
# === Get orders statuses
|
42
|
+
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
|
43
|
+
#
|
44
|
+
# Example:
|
45
|
+
# >> Retailcrm.orders_statuses([26120, 19282])
|
46
|
+
# => {...}
|
47
|
+
#
|
48
|
+
# Arguments:
|
49
|
+
# ids (Array)
|
50
|
+
def orders_statuses(ids = [])
|
51
|
+
@ids = ids.map { |x| "ids[]=#{x}" }.join("&")
|
52
|
+
url = "#{@rr_url}orders/statuses"
|
53
|
+
make_request(url)
|
36
54
|
end
|
37
55
|
|
38
56
|
##
|
@@ -48,10 +66,10 @@ class Retailcrm
|
|
48
66
|
# by (String)
|
49
67
|
def orders_get(id, by = 'externalId')
|
50
68
|
url = "#{@rr_url}orders/#{id}"
|
51
|
-
if
|
69
|
+
if by != 'externalId'
|
52
70
|
@rr_params[:by] = by
|
53
71
|
end
|
54
|
-
|
72
|
+
make_request(url)
|
55
73
|
end
|
56
74
|
|
57
75
|
##
|
@@ -67,7 +85,7 @@ class Retailcrm
|
|
67
85
|
def orders_create(order)
|
68
86
|
url = "#{@rr_url}orders/create"
|
69
87
|
@rr_params[:order] = order.to_json
|
70
|
-
|
88
|
+
make_request(url, 'post')
|
71
89
|
end
|
72
90
|
|
73
91
|
##
|
@@ -84,7 +102,7 @@ class Retailcrm
|
|
84
102
|
id = order[:externalId]
|
85
103
|
url = "#{@rr_url}orders/#{id}/edit"
|
86
104
|
@rr_params[:order] = order.to_json
|
87
|
-
|
105
|
+
make_request(url, 'post')
|
88
106
|
end
|
89
107
|
|
90
108
|
##
|
@@ -100,8 +118,7 @@ class Retailcrm
|
|
100
118
|
def orders_upload(orders)
|
101
119
|
url = "#{@rr_url}orders/upload"
|
102
120
|
@rr_params[:orders] = orders.to_json
|
103
|
-
|
104
|
-
return result[:uploadedOrders] || result
|
121
|
+
make_request(url, 'post')
|
105
122
|
end
|
106
123
|
|
107
124
|
##
|
@@ -117,7 +134,7 @@ class Retailcrm
|
|
117
134
|
def orders_fix_external_ids(orders)
|
118
135
|
url = "#{@rr_url}orders/fix-external-ids"
|
119
136
|
@rr_params[:orders] = orders.to_json
|
120
|
-
|
137
|
+
make_request(url, 'post')
|
121
138
|
end
|
122
139
|
|
123
140
|
##
|
@@ -129,32 +146,39 @@ class Retailcrm
|
|
129
146
|
# => {...}
|
130
147
|
#
|
131
148
|
# Arguments:
|
132
|
-
#
|
133
|
-
#
|
149
|
+
# start_date (Time) (Time.strftime('%Y-%m-%d %H:%M:%S'))
|
150
|
+
# end_date (Time) (Time.strftime('%Y-%m-%d %H:%M:%S'))
|
134
151
|
# limit (Integer) (20|50|100)
|
135
152
|
# offset (Integer)
|
136
|
-
|
153
|
+
# skip_my_changes (Boolean)
|
154
|
+
def orders_history(start_date = nil, end_date = nil, limit = 100, offset = 0, skip_my_changes = true)
|
137
155
|
url = "#{@rr_url}orders/history"
|
138
|
-
@rr_params[:startDate] =
|
139
|
-
@rr_params[:endDate] =
|
156
|
+
@rr_params[:startDate] = start_date
|
157
|
+
@rr_params[:endDate] = end_date
|
140
158
|
@rr_params[:limit] = limit
|
141
159
|
@rr_params[:offset] = offset
|
142
|
-
|
160
|
+
@rr_params[:skipMyChanges] = skip_my_changes
|
161
|
+
make_request(url)
|
143
162
|
end
|
144
163
|
|
145
164
|
##
|
146
|
-
# ===
|
165
|
+
# === Get customers by filter
|
147
166
|
# http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
|
148
167
|
#
|
149
168
|
# Example:
|
150
|
-
# >> Retailcrm.
|
169
|
+
# >> Retailcrm.customers({:email => 'test@example.com'}, 50, 2)
|
151
170
|
# => {...}
|
152
171
|
#
|
153
172
|
# Arguments:
|
154
|
-
#
|
155
|
-
|
156
|
-
|
157
|
-
|
173
|
+
# filter (Hash)
|
174
|
+
# limit (Integer) (20|50|100)
|
175
|
+
# page (Integer)
|
176
|
+
def customers(filter = nil, limit = 20, page = 1)
|
177
|
+
url = "#{@rr_url}customers"
|
178
|
+
@rr_params[:limit] = limit
|
179
|
+
@rr_params[:page] = page
|
180
|
+
@filter = filter.to_a.map { |x| "filter[#{x[0]}]=#{x[1]}" }.join("&")
|
181
|
+
make_request(url)
|
158
182
|
end
|
159
183
|
|
160
184
|
##
|
@@ -170,10 +194,10 @@ class Retailcrm
|
|
170
194
|
# by (String)
|
171
195
|
def customers_get(id, by = 'externalId')
|
172
196
|
url = "#{@rr_url}customers/#{id}"
|
173
|
-
if
|
197
|
+
if by != 'externalId'
|
174
198
|
@rr_params[:by] = by
|
175
199
|
end
|
176
|
-
|
200
|
+
make_request(url)
|
177
201
|
end
|
178
202
|
|
179
203
|
##
|
@@ -189,7 +213,7 @@ class Retailcrm
|
|
189
213
|
def customers_create(customer)
|
190
214
|
url = "#{@rr_url}customers/create"
|
191
215
|
@rr_params[:customer] = customer.to_json
|
192
|
-
|
216
|
+
make_request(url, 'post')
|
193
217
|
end
|
194
218
|
|
195
219
|
##
|
@@ -202,10 +226,11 @@ class Retailcrm
|
|
202
226
|
#
|
203
227
|
# Arguments:
|
204
228
|
# customer (Array)
|
205
|
-
def customers_edit(customer
|
229
|
+
def customers_edit(customer)
|
230
|
+
id = customer[:externalId]
|
206
231
|
url = "#{@rr_url}customers/#{id}/edit"
|
207
232
|
@rr_params[:customer] = customer.to_json
|
208
|
-
|
233
|
+
make_request(url, 'post')
|
209
234
|
end
|
210
235
|
|
211
236
|
##
|
@@ -221,8 +246,7 @@ class Retailcrm
|
|
221
246
|
def customers_upload(customers)
|
222
247
|
url = "#{@rr_url}customers/upload"
|
223
248
|
@rr_params[:customers] = customers.to_json
|
224
|
-
|
225
|
-
return result[:uploaded] || result
|
249
|
+
make_request(url, 'post')
|
226
250
|
end
|
227
251
|
|
228
252
|
##
|
@@ -238,7 +262,7 @@ class Retailcrm
|
|
238
262
|
def customers_fix_external_ids(customers)
|
239
263
|
url = "#{@rr_url}customers/fix-external-ids"
|
240
264
|
@rr_params[:customers] = customers.to_json
|
241
|
-
|
265
|
+
make_request(url, 'post')
|
242
266
|
end
|
243
267
|
|
244
268
|
##
|
@@ -247,7 +271,7 @@ class Retailcrm
|
|
247
271
|
#
|
248
272
|
def delivery_services
|
249
273
|
url = "#{@rr_url}reference/delivery-services"
|
250
|
-
|
274
|
+
make_request(url)
|
251
275
|
end
|
252
276
|
|
253
277
|
# Get delivery types
|
@@ -255,7 +279,7 @@ class Retailcrm
|
|
255
279
|
#
|
256
280
|
def delivery_types
|
257
281
|
url = "#{@rr_url}reference/delivery-types"
|
258
|
-
|
282
|
+
make_request(url)
|
259
283
|
end
|
260
284
|
|
261
285
|
##
|
@@ -264,7 +288,7 @@ class Retailcrm
|
|
264
288
|
#
|
265
289
|
def order_methods
|
266
290
|
url = "#{@rr_url}reference/order-methods"
|
267
|
-
|
291
|
+
make_request(url)
|
268
292
|
end
|
269
293
|
|
270
294
|
##
|
@@ -273,7 +297,7 @@ class Retailcrm
|
|
273
297
|
#
|
274
298
|
def order_types
|
275
299
|
url = "#{@rr_url}reference/order-types"
|
276
|
-
|
300
|
+
make_request(url)
|
277
301
|
end
|
278
302
|
|
279
303
|
# Get payment statuses
|
@@ -281,7 +305,7 @@ class Retailcrm
|
|
281
305
|
#
|
282
306
|
def payment_statuses
|
283
307
|
url = "#{@rr_url}reference/payment-statuses"
|
284
|
-
|
308
|
+
make_request(url)
|
285
309
|
end
|
286
310
|
|
287
311
|
##
|
@@ -290,7 +314,7 @@ class Retailcrm
|
|
290
314
|
#
|
291
315
|
def payment_types
|
292
316
|
url = "#{@rr_url}reference/payment-types"
|
293
|
-
|
317
|
+
make_request(url)
|
294
318
|
end
|
295
319
|
|
296
320
|
##
|
@@ -299,7 +323,7 @@ class Retailcrm
|
|
299
323
|
#
|
300
324
|
def product_statuses
|
301
325
|
url = "#{@rr_url}reference/product-statuses"
|
302
|
-
|
326
|
+
make_request(url)
|
303
327
|
end
|
304
328
|
|
305
329
|
# Get sites list
|
@@ -307,7 +331,7 @@ class Retailcrm
|
|
307
331
|
#
|
308
332
|
def sites
|
309
333
|
url = "#{@rr_url}reference/sites"
|
310
|
-
|
334
|
+
make_request(url)
|
311
335
|
end
|
312
336
|
|
313
337
|
##
|
@@ -316,7 +340,7 @@ class Retailcrm
|
|
316
340
|
#
|
317
341
|
def status_groups
|
318
342
|
url = "#{@rr_url}reference/status-groups"
|
319
|
-
|
343
|
+
make_request(url)
|
320
344
|
end
|
321
345
|
|
322
346
|
# Get statuses
|
@@ -324,7 +348,7 @@ class Retailcrm
|
|
324
348
|
#
|
325
349
|
def statuses
|
326
350
|
url = "#{@rr_url}reference/statuses"
|
327
|
-
|
351
|
+
make_request(url)
|
328
352
|
end
|
329
353
|
|
330
354
|
##
|
@@ -333,7 +357,7 @@ class Retailcrm
|
|
333
357
|
#
|
334
358
|
def stores
|
335
359
|
url = "#{@rr_url}reference/stores"
|
336
|
-
|
360
|
+
make_request(url)
|
337
361
|
end
|
338
362
|
|
339
363
|
|
@@ -343,7 +367,7 @@ class Retailcrm
|
|
343
367
|
#
|
344
368
|
def statistic_update
|
345
369
|
url = "#{@rr_url}statistic/update"
|
346
|
-
|
370
|
+
make_request(url)
|
347
371
|
end
|
348
372
|
|
349
373
|
protected
|
@@ -353,34 +377,42 @@ class Retailcrm
|
|
353
377
|
uri = URI.parse(url)
|
354
378
|
https = Net::HTTP.new(uri.host, uri.port)
|
355
379
|
https.use_ssl = true
|
380
|
+
|
356
381
|
if method == 'post'
|
357
382
|
request = Net::HTTP::Post.new(uri)
|
358
383
|
request.set_form_data(@rr_params)
|
359
384
|
elsif method == 'get'
|
360
385
|
request = Net::HTTP::Get.new(uri.path)
|
361
386
|
request.set_form_data(@rr_params)
|
362
|
-
|
387
|
+
|
388
|
+
if @filter.nil?
|
389
|
+
data = "#{request.body}"
|
390
|
+
else
|
391
|
+
data = "#{request.body}&#{@filter}"
|
392
|
+
end
|
393
|
+
|
394
|
+
if @ids.nil?
|
395
|
+
data = "#{request.body}"
|
396
|
+
else
|
397
|
+
data = "#{request.body}&#{@ids}"
|
398
|
+
end
|
399
|
+
|
400
|
+
request = Net::HTTP::Get.new("#{uri.path}?#{data}")
|
363
401
|
end
|
364
402
|
response = https.request(request)
|
365
|
-
|
403
|
+
Retailcrm::Response.new(response.code, response.body)
|
366
404
|
end
|
367
405
|
end
|
368
406
|
|
369
407
|
class Retailcrm::Response
|
408
|
+
attr_reader :status, :response
|
409
|
+
|
370
410
|
def initialize(status, body)
|
371
411
|
@status = status
|
372
|
-
@response = body.empty? ? [] : JSON.parse(body)
|
373
|
-
end
|
374
|
-
|
375
|
-
def get_status
|
376
|
-
return @status
|
412
|
+
@response = body.empty? ? [] : JSON.parse(body)
|
377
413
|
end
|
378
|
-
|
379
|
-
def get_response
|
380
|
-
return @response
|
381
|
-
end
|
382
|
-
|
414
|
+
|
383
415
|
def is_successfull?
|
384
|
-
|
416
|
+
@status.to_i < 400
|
385
417
|
end
|
386
418
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: retailcrm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Lushpai
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Library for interact with RetailCRM API
|
14
14
|
email: lushpai@gmail.com
|