aboutyou-sdk 0.0.24 → 0.0.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +8 -8
  2. data/lib/{aboutyou-sdk/CacheProvider/Dalli.rb → AboutYou/CacheProvider/dalli.rb} +18 -19
  3. data/lib/{aboutyou-sdk/CacheProvider/Redis.rb → AboutYou/CacheProvider/redis.rb} +19 -20
  4. data/lib/{aboutyou-sdk/Criteria/ProductFields.rb → AboutYou/Criteria/product_fields.rb} +25 -27
  5. data/lib/{aboutyou-sdk/Criteria/ProductSearchCriteria.rb → AboutYou/Criteria/product_search_criteria.rb} +128 -123
  6. data/lib/{aboutyou-sdk/Factory/DefaultModelFactory.rb → AboutYou/Factory/default_model_factory.rb} +267 -224
  7. data/lib/AboutYou/Model/Basket/abstract_basket_item.rb +57 -0
  8. data/lib/AboutYou/Model/Basket/basket_item.rb +95 -0
  9. data/lib/AboutYou/Model/Basket/basket_set.rb +199 -0
  10. data/lib/AboutYou/Model/Basket/basket_set_item.rb +54 -0
  11. data/lib/AboutYou/Model/Basket/basket_variant_item.rb +123 -0
  12. data/lib/{aboutyou-sdk/Model/CategoryManager/DefaultCategoryManager.rb → AboutYou/Model/CategoryManager/default_category_manager.rb} +80 -65
  13. data/lib/{aboutyou-sdk/Model/FacetManager/DefaultFacetManager.rb → AboutYou/Model/FacetManager/default_facet_manager.rb} +58 -50
  14. data/lib/{aboutyou-sdk/Model/ProductSearchResult/FacetCount.rb → AboutYou/Model/ProductSearchResult/facet_count.rb} +2 -3
  15. data/lib/AboutYou/Model/ProductSearchResult/facet_counts.rb +67 -0
  16. data/lib/{aboutyou-sdk/Model/ProductSearchResult/PriceRange.rb → AboutYou/Model/ProductSearchResult/price_range.rb} +17 -18
  17. data/lib/AboutYou/Model/ProductSearchResult/sale_counts.rb +79 -0
  18. data/lib/AboutYou/Model/ProductSearchResult/terms_count.rb +40 -0
  19. data/lib/{aboutyou-sdk/Model/AbstractModel.rb → AboutYou/Model/abstract_model.rb} +2 -3
  20. data/lib/{aboutyou-sdk/Model/App.rb → AboutYou/Model/app.rb} +15 -15
  21. data/lib/{aboutyou-sdk/Model/Autocomplete.rb → AboutYou/Model/autocomplete.rb} +25 -32
  22. data/lib/AboutYou/Model/basket.rb +235 -0
  23. data/lib/AboutYou/Model/categories_result.rb +24 -0
  24. data/lib/AboutYou/Model/category.rb +102 -0
  25. data/lib/AboutYou/Model/category_tree.rb +37 -0
  26. data/lib/AboutYou/Model/facet.rb +86 -0
  27. data/lib/AboutYou/Model/facet_group.rb +96 -0
  28. data/lib/AboutYou/Model/facet_group_set.rb +209 -0
  29. data/lib/AboutYou/Model/image.rb +102 -0
  30. data/lib/{aboutyou-sdk/Model/ImageSize.rb → AboutYou/Model/image_size.rb} +9 -5
  31. data/lib/AboutYou/Model/initiate_order.rb +53 -0
  32. data/lib/AboutYou/Model/order.rb +22 -0
  33. data/lib/AboutYou/Model/product.rb +353 -0
  34. data/lib/AboutYou/Model/product_search_result.rb +114 -0
  35. data/lib/AboutYou/Model/products_ean_result.rb +43 -0
  36. data/lib/AboutYou/Model/products_result.rb +56 -0
  37. data/lib/AboutYou/Model/result_error.rb +28 -0
  38. data/lib/AboutYou/Model/variant.rb +214 -0
  39. data/lib/AboutYou/Model/variants_result.rb +91 -0
  40. data/lib/AboutYou/client.rb +128 -0
  41. data/lib/{aboutyou-sdk/Constants.rb → AboutYou/constants.rb} +3 -5
  42. data/lib/AboutYou/query.rb +343 -0
  43. data/lib/AboutYou/query_builder.rb +530 -0
  44. data/lib/ay.rb +566 -0
  45. data/tests/Sinatra-test/Main.rb +3 -0
  46. data/tests/testAutocomplete.rb +5 -6
  47. data/tests/testCatFilter.rb +8 -9
  48. data/tests/testCatTree.rb +3 -3
  49. data/tests/testCategoryCaching.rb +4 -5
  50. data/tests/{testFacetCaching.rb → testDalliCache.rb} +4 -5
  51. data/tests/testFacetTypes.rb +5 -6
  52. data/tests/testFacets.rb +7 -8
  53. data/tests/testFetchFacet.rb +5 -6
  54. data/tests/testJavaScript.rb +3 -4
  55. data/tests/testProdCatLongestPath.rb +7 -8
  56. data/tests/testProductSearchResult.rb +6 -7
  57. data/tests/testProductsByEans.rb +6 -7
  58. data/tests/testProductsByIds.rb +6 -7
  59. data/tests/testRedisCache.rb +4 -5
  60. data/tests/testSuggest.rb +5 -6
  61. data/tests/testVariantsByIds.rb +7 -8
  62. metadata +46 -46
  63. data/lib/aboutyou-sdk.rb +0 -596
  64. data/lib/aboutyou-sdk/Client.rb +0 -134
  65. data/lib/aboutyou-sdk/Model/Basket.rb +0 -268
  66. data/lib/aboutyou-sdk/Model/Basket/AbstractBasketItem.rb +0 -76
  67. data/lib/aboutyou-sdk/Model/Basket/BasketItem.rb +0 -100
  68. data/lib/aboutyou-sdk/Model/Basket/BasketSet.rb +0 -192
  69. data/lib/aboutyou-sdk/Model/Basket/BasketSetItem.rb +0 -46
  70. data/lib/aboutyou-sdk/Model/Basket/BasketVariantItem.rb +0 -137
  71. data/lib/aboutyou-sdk/Model/CategoriesResult.rb +0 -15
  72. data/lib/aboutyou-sdk/Model/Category.rb +0 -126
  73. data/lib/aboutyou-sdk/Model/CategoryTree.rb +0 -35
  74. data/lib/aboutyou-sdk/Model/Facet.rb +0 -105
  75. data/lib/aboutyou-sdk/Model/FacetGroup.rb +0 -110
  76. data/lib/aboutyou-sdk/Model/FacetGroupSet.rb +0 -242
  77. data/lib/aboutyou-sdk/Model/Image.rb +0 -134
  78. data/lib/aboutyou-sdk/Model/InitiateOrder.rb +0 -50
  79. data/lib/aboutyou-sdk/Model/Order.rb +0 -17
  80. data/lib/aboutyou-sdk/Model/Product.rb +0 -335
  81. data/lib/aboutyou-sdk/Model/ProductSearchResult.rb +0 -125
  82. data/lib/aboutyou-sdk/Model/ProductSearchResult/FacetCounts.rb +0 -59
  83. data/lib/aboutyou-sdk/Model/ProductSearchResult/SaleCounts.rb +0 -71
  84. data/lib/aboutyou-sdk/Model/ProductSearchResult/TermsCount.rb +0 -36
  85. data/lib/aboutyou-sdk/Model/ProductsEansResult.rb +0 -47
  86. data/lib/aboutyou-sdk/Model/ProductsResult.rb +0 -52
  87. data/lib/aboutyou-sdk/Model/ResultError.rb +0 -24
  88. data/lib/aboutyou-sdk/Model/Variant.rb +0 -255
  89. data/lib/aboutyou-sdk/Model/VariantsResult.rb +0 -102
  90. data/lib/aboutyou-sdk/Query.rb +0 -350
  91. data/lib/aboutyou-sdk/QueryBuilder.rb +0 -499
@@ -1,499 +0,0 @@
1
- module AboutYou
2
- module SDK
3
- ###
4
- # the QueryBuilder is a module supporting the query with mroe complex logic
5
- # concerning the building of the queries for the api-call
6
- #
7
- # Author:: Collins GmbH & Co KG
8
- ###
9
- module QueryBuilder
10
-
11
- ###
12
- # builds the autocompletion-query
13
- #
14
- # * *Args* :
15
- # - +searchword+ -> a String containing the word to search completitions for
16
- # - +limit+ -> Maximum number of results [optional]
17
- # - +types+ -> Array of types to search for [optional]
18
- #
19
- # * *Returns* :
20
- # - Instance of AboutYou::SDK::Query
21
- ###
22
- def fetchAutocomplete(searchword, limit = nil, types = nil)
23
-
24
- unless searchword.is_a? String
25
- raise 'InvalidArgumentException! searchword must be a string'
26
- end
27
-
28
- # downcase is a workaround of ticket SAPI-532
29
- options = {'searchword' => searchword.downcase}
30
-
31
- if limit != nil
32
- if !(limit.is_a? Integer) && !limit[/\d/]
33
- raise 'InvalidArgumentException! limit must be an integer'
34
- end
35
- options['limit'] = Integer(limit)
36
- end
37
-
38
- unless types.empty?
39
- options['types'] = types
40
- end
41
-
42
- self.query.push({'autocompletion' => options})
43
- self
44
- end
45
-
46
- ###
47
- # builds the basket-query
48
- #
49
- # * *Args* :
50
- # - +sessionId+ -> a String containing the session id of an user
51
- #
52
- # * *Returns* :
53
- # - Instance of AboutYou::SDK::Query
54
- ###
55
- def fetchBasket(sessionId)
56
-
57
- checkSessionId(sessionId)
58
-
59
- self.query.push({'basket' => {'session_id' => sessionId}})
60
- self
61
- end
62
-
63
- ###
64
- # builds the basket-query
65
- #
66
- # * *Args* :
67
- # - +sessionId+ -> a String containing the session id of an user
68
- # - +items+ -> an Array containing all of the items which should be added
69
- #
70
- # * *Returns* :
71
- # - Instance of AboutYou::SDK::Query
72
- ###
73
- def addItemsToBasket(sessionId, items)
74
-
75
- checkSessionId(sessionId)
76
-
77
- orderLines = []
78
-
79
- items.each do |item|
80
- orderLine = {
81
- 'id' => item.id,
82
- 'variant_id' => item.variantId
83
- }
84
-
85
- if item.additionalData
86
- orderLine['additional_data'] = item.additionalData
87
- end
88
-
89
- orderLines.push(orderLine)
90
- end
91
-
92
- self.query.push({'basket' => {
93
- 'session_id' => sessionId,
94
- 'order_lines' => orderLines
95
- }})
96
- self
97
- end
98
-
99
- ###
100
- # builds the basket-query
101
- #
102
- # * *Args* :
103
- # - +sessionId+ -> a String containing the session id of an user
104
- # - +itemSets+ -> an instance of AboutYou::SDK::Model::BasketSet
105
- #
106
- # * *Returns* :
107
- # - Instance of AboutYou::SDK::Query
108
- ###
109
- def addItemSetsToBasket(sessionId, itemSets)
110
-
111
- checkSessionId(sessionId)
112
-
113
- orderLines = []
114
-
115
- itemSets.each do |itemSet|
116
- orderLine = {
117
- 'id' => itemSet.id,
118
- 'set_items' => []
119
- }
120
-
121
- if itemSet.additionalData
122
- orderLine['additional_data'] = itemSet.additionalData
123
- end
124
-
125
- itemSet.items.each do |item|
126
- entry = {'variant_id' => item.variantId}
127
- if item.additionalData
128
- entry['additional_data'] = item.additionalData
129
- end
130
- orderLine['set_items'].push(entry)
131
- end
132
-
133
- orderLines.push(orderLine)
134
- end
135
-
136
- self.query.push({'basket' => {
137
- 'session_id' => sessionId,
138
- 'order_lines' => orderLines
139
- }})
140
- self
141
- end
142
-
143
- ###
144
- # builds the basket-query
145
- #
146
- # * *Args* :
147
- # - +sessionId+ -> a String containing the session id of an user
148
- # - +productVariantId+ -> ID of product variant
149
- # - +basketItemId+ -> ID of single item or set in the basket
150
- #
151
- # * *Returns* :
152
- # - Instance of AboutYou::SDK::Query
153
- ###
154
- def addToBasket(sessionId, productVariantId, basketItemId)
155
-
156
- checkSessionId(sessionId)
157
-
158
- self.query.push({'basket' => {
159
- 'session_id' => sessionId,
160
- 'order_lines' => [{
161
- 'id' => basketItemId,
162
- 'variant_id' => Integer(productVariantId)
163
- }]
164
- }})
165
- self
166
- end
167
-
168
- ###
169
- # builds the basket-query
170
- #
171
- # * *Args* :
172
- # - +sessionId+ -> a String containing the session id of an user
173
- # - +itemIds+ -> array of basket item ids to delete, this can be sets or single items
174
- #
175
- # * *Returns* :
176
- # - Instance of AboutYou::SDK::Query
177
- ###
178
- def removeFromBasket(sessionId, itemIds)
179
-
180
- checkSessionId(sessionId)
181
-
182
- orderLines = []
183
-
184
- itemIds.each do |id|
185
- orderLines.push({'delete' => id})
186
- end
187
-
188
- self.query.push({
189
- 'basket' => {
190
- 'session_id' => sessionId,
191
- 'order_lines' => orderLines
192
- }
193
- })
194
- self
195
- end
196
-
197
- ###
198
- # builds the basket-query
199
- #
200
- # * *Args* :
201
- # - +sessionId+ -> a String containing the session id of an user
202
- # - +basket+ -> an instance of AboutYou::SDK::Model::Basket
203
- #
204
- # * *Returns* :
205
- # - Instance of AboutYou::SDK::Query
206
- ###
207
- def updateBasket(sessionId, basket)
208
-
209
- checkSessionId(sessionId)
210
-
211
- basketQuery = {'session_id' => sessionId}
212
-
213
- orderLines = basket.orderLinesArray
214
- unless orderLines.empty?
215
- basketQuery['order_lines'] = orderLines
216
- end
217
-
218
- self.query.push({'basket' => basketQuery})
219
- self
220
- end
221
-
222
- ###
223
- # builds the category-query
224
- #
225
- # * *Args* :
226
- # - +ids+ -> either a single category ID as integer or an array of IDs
227
- #
228
- # * *Returns* :
229
- # - Instance of AboutYou::SDK::Query
230
- ###
231
- def fetchCategoriesByIds(ids = nil)
232
-
233
- if ids == nil
234
- self.query.push('category' => nil)
235
- else
236
- # we allow to pass a single ID instead of an array
237
- ids = Array(ids)
238
-
239
- ids.each do |id|
240
- id = Integer(id)
241
- if id < 1
242
- raise 'InvalidArgumentException! A single category ID must be greater than 0'
243
- end
244
- end
245
-
246
- ids = ids.map{|id| Integer(id)}
247
-
248
- self.query.push({
249
- 'category' => {
250
- 'ids' => ids}
251
- })
252
- end
253
- self
254
- end
255
-
256
- ###
257
- # builds the category_tree-query
258
- #
259
- # * *Returns* :
260
- # - Instance of AboutYou::SDK::Query
261
- ###
262
- def fetchCategoryTree
263
-
264
- self.query.push({'category_tree' => {"version"=>"2"}})
265
- self
266
- end
267
-
268
- ###
269
- # builds the products-query
270
- #
271
- # * *Args* :
272
- # - +ids+ -> Either a single id or an Array of ids which should be fetched
273
- # - +fields+ -> Additional product fields which should be fetched for each product [optional]
274
- #
275
- # * *Returns* :
276
- # - Instance of AboutYou::SDK::Query
277
- ###
278
- def fetchProductsByIds(ids,fields = [])
279
- # we allow to pass a single ID instead of an array
280
-
281
- ids = Array(ids).map{|id| Integer(id)}
282
-
283
- self.query.push({'products' => {
284
- 'ids' => ids,
285
- 'fields' => AboutYou::SDK::Criteria::ProductFields.filterFields(fields)
286
- }
287
- })
288
- self
289
- end
290
-
291
- ###
292
- # builds the live_variant-query
293
- #
294
- # * *Args* :
295
- # - +ids+ -> Either a single id or an Array of ids which should be fetched
296
- #
297
- # * *Returns* :
298
- # - Instance of AboutYou::SDK::Query
299
- ###
300
- def fetchLiveVariantByIds(ids)
301
- # we allow to pass a single ID instead of an array
302
- ids = Array(ids)
303
-
304
- ids = ids.map{|id| Integer(id)}
305
-
306
- self.query.push({'live_variant' => {'ids' => ids}})
307
- self
308
- end
309
-
310
- ###
311
- # builds the products_eans-query
312
- #
313
- # * *Args* :
314
- # - +eans+ -> Either a single ean or an Array of eans which should be fetched
315
- # - +fields+ -> Additional product fields which should be fetched for each product [optional]
316
- #
317
- # * *Returns* :
318
- # - Instance of AboutYou::SDK::Query
319
- ###
320
- def fetchProductsByEans(eans,fields = [])
321
-
322
- self.query.push({
323
- 'products_eans' => {
324
- 'eans' => eans,
325
- 'fields' => AboutYou::SDK::Criteria::ProductFields.filterFields(fields),
326
- 'version' => '2'
327
- }
328
- })
329
- self
330
- end
331
-
332
- ###
333
- # builds the get_order-query
334
- #
335
- # * *Args* :
336
- # - +orderId+ -> id of the order which should be fetched
337
- #
338
- # * *Returns* :
339
- # - Instance of AboutYou::SDK::Query
340
- ###
341
- def fetchOrder(orderId)
342
-
343
- self.query.push({'get_order' => {'order_id' => orderId}})
344
- self
345
- end
346
-
347
- ###
348
- # builds the initiate_order-query
349
- #
350
- # * *Args* :
351
- # - +sessionId+ -> A String containing the sessionId of the User
352
- # - +successUrl+ -> callback URL if the order was OK
353
- # - +cancelUrl+ -> callback URL if the order was canceled [optional]
354
- # - +errorUrl+ -> callback URL if the order had any exceptions [optional]
355
- #
356
- # * *Returns* :
357
- # - Instance of AboutYou::SDK::Query
358
- ###
359
- def initiateOrder(sessionId, successUrl, cancelUrl, errorUrl)
360
-
361
- checkSessionId(sessionId)
362
-
363
- args = {
364
- 'session_id' => sessionId,
365
- 'success_url' => successUrl
366
- }
367
- if cancelUrl
368
- args['cancel_url'] = cancelUrl
369
- end
370
- if errorUrl
371
- args['error_url'] = errorUrl
372
- end
373
- self.query.push({'initiate_order' => args})
374
- self
375
- end
376
-
377
- ###
378
- # builds the product_search-query
379
- #
380
- # * *Args* :
381
- # - +criteria+ -> Hash containing one or multiple search terms
382
- #
383
- # * *Returns* :
384
- # - Instance of AboutYou::SDK::Query
385
- ###
386
- def fetchProductSearch(criteria)
387
-
388
- checkSessionId(criteria.sessionId)
389
-
390
- self.query.push({'product_search' => criteria.toArray})
391
- self
392
- end
393
-
394
- ###
395
- # builds the facets-query
396
- #
397
- # * *Args* :
398
- # - +groupIds+ -> Array of group ids [optional]
399
- #
400
- # * *Returns* :
401
- # - Instance of AboutYou::SDK::Query
402
- ###
403
- def fetchFacets(groupIds = [])
404
-
405
- if groupIds
406
- groupids = groupIds.map{|groupId| Integer(groupId)}
407
- end
408
-
409
- self.query.push({'facets' => {'group_ids' => groupids}})
410
- self
411
- end
412
-
413
- ###
414
- # builds the facet-query
415
- #
416
- # * *Args* :
417
- # - +params+ -> Hash containing 2 keys: "id", "group_id"
418
- #
419
- # * *Returns* :
420
- # - Instance of AboutYou::SDK::Query
421
- ###
422
- def fetchFacet(params)
423
-
424
- if params.empty?
425
- raise 'InvalidArgumentException! no params given'
426
- end
427
-
428
- self.query.push({'facet' => params})
429
- self
430
- end
431
-
432
- ###
433
- # builds the facet_types-query
434
- #
435
- # * *Returns* :
436
- # - Instance of AboutYou::SDK::Query
437
- ###
438
- def fetchFacetTypes
439
-
440
- self.query.push({'facet_types' => nil})
441
- self
442
- end
443
-
444
- ###
445
- # builds the suggest-query
446
- #
447
- # * *Args* :
448
- # - +searchword+ -> the searchs tring to search for
449
- #
450
- # * *Returns* :
451
- # - Instance of AboutYou::SDK::Query
452
- ###
453
- def fetchSuggest(searchword)
454
-
455
- self.query.push({'suggest' => {'searchword' => searchword}})
456
- self
457
- end
458
-
459
- ###
460
- # builds the child_apps-query
461
- #
462
- # * *Returns* :
463
- # - Instance of AboutYou::SDK::Query
464
- ###
465
- def fetchChildApps
466
-
467
- self.query.push({'child_apps' => nil})
468
- self
469
- end
470
-
471
- ###
472
- # turns all queries built in here into a json string
473
- #
474
- # * *Returns* :
475
- # - Json string containing all queries built in here
476
- ###
477
- def queryString
478
-
479
- self.query.to_json
480
- end
481
-
482
- ###
483
- # checks whether the session id is valid or not
484
- #
485
- # * *Args* :
486
- # - +sessionId+ -> the session id of a user
487
- ###
488
- def checkSessionId(sessionId)
489
-
490
- unless sessionId.is_a? String
491
- raise 'InvalidArgumentException! The session id must be a string'
492
- end
493
- unless sessionId.length > 4
494
- raise 'InvalidArgumentException! The session id must have at least 5 characters'
495
- end
496
- end
497
- end
498
- end
499
- end