retailcrm 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/retailcrm.rb +89 -57
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 628547b65ef69174b1078a72f18fa478ec180215
4
- data.tar.gz: eed44d3358dd746f9e865f42e8d7d7948efb0739
3
+ metadata.gz: 5892ff6239b7f32f4734350c0594c3aca0d2b542
4
+ data.tar.gz: e51a74e3dca2008a92a786850608ab13f7973d76
5
5
  SHA512:
6
- metadata.gz: 34f3a694de6fd01e78196ddaae581bcb892d154ea79ceceb28b21478865f1519edb243f2ad70c044f63448b97ae8f16b7e2dcac2ae44e80891bbf67375215e5b
7
- data.tar.gz: cae642d7b1444ca4405eaef03673c66cfd42104d44bc8123ac285bf6be4be8ca74f69cde249b120894f262901bd85a4d7485af493f80f9d576463f75a3ba0f9e
6
+ metadata.gz: 1138c399ba37c527d18b7f8be73b507ac171c5cd15cb43962c0a387f98f190fa0634965de25d13caae0836a924d06c7a12acd5e98f4009fe7f129da886a05df0
7
+ data.tar.gz: f9e3ad55a0c60f4fe1ef8f3f6c98e5594f98a5c23f709305c52539623e2efd1b034b7007b5db671ccaca6d8f4855e04fdd0850840fc09cb4a80a183d1e75c69f
@@ -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(50, 2, {:email => 'test@example.com', :status => 'new'})
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
- # filter (Array)
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
- @rr_params[:filter] = filter.to_json
35
- return make_request(url)
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 (by != 'externalId')
69
+ if by != 'externalId'
52
70
  @rr_params[:by] = by
53
71
  end
54
- return make_request(url)
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
- return make_request(url, 'post')
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
- return make_request(url, 'post')
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
- result = JSON.parse(make_request(url, 'post'))
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
- return make_request(url, 'post')
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
- # startDate (Time) (Time.strftime('%Y-%m-%d %H:%M:%S'))
133
- # endDate (Time) (Time.strftime('%Y-%m-%d %H:%M:%S'))
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
- def orders_history(startDate = nil, endDate = nil, limit = 20, offset = 0)
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] = startDate
139
- @rr_params[:endDate] = 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
- return make_request(url)
160
+ @rr_params[:skipMyChanges] = skip_my_changes
161
+ make_request(url)
143
162
  end
144
163
 
145
164
  ##
146
- # === Get orders statuses
165
+ # === Get customers by filter
147
166
  # http://www.retailcrm.ru/docs/Разработчики/СправочникМетодовAPIV3
148
167
  #
149
168
  # Example:
150
- # >> Retailcrm.orders_statuses([231,244,356,564])
169
+ # >> Retailcrm.customers({:email => 'test@example.com'}, 50, 2)
151
170
  # => {...}
152
171
  #
153
172
  # Arguments:
154
- # ids (Array)
155
- def orders_statuses(ids)
156
- url = "#{@rr_url}orders/statuses/#{ids}"
157
- return make_request(url)
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 (by != 'externalId')
197
+ if by != 'externalId'
174
198
  @rr_params[:by] = by
175
199
  end
176
- return make_request(url)
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
- return make_request(url, 'post')
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, id)
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
- return make_request(url, 'post')
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
- result = JSON.parse(make_request(url, 'post'))
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
- return make_request(url, 'post')
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
- return make_request(url)
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
- return make_request(url)
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
- return make_request(url)
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
- return make_request(url)
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
- return make_request(url)
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
- return make_request(url)
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
- return make_request(url)
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
- return make_request(url)
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
- return make_request(url)
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
- return make_request(url)
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
- return make_request(url)
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
- return make_request(url)
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
- request = Net::HTTP::Get.new("#{uri.path}?#{request.body}")
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
- return Retailcrm::Response.new(response.code, response.body)
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
- return @status.to_i < 400
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.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-13 00:00:00.000000000 Z
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