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.
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