retailcrm 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|