aboutyou-sdk 0.0.29 → 0.0.30

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +8 -8
  2. data/lib/AboutYou/CacheProvider/dalli.rb +3 -0
  3. data/lib/AboutYou/Criteria/product_fields.rb +3 -0
  4. data/lib/AboutYou/Criteria/product_search_criteria.rb +8 -8
  5. data/lib/AboutYou/Factory/default_model_factory.rb +15 -2
  6. data/lib/AboutYou/Model/Basket/abstract_basket_item.rb +25 -20
  7. data/lib/AboutYou/Model/Basket/basket_item.rb +27 -27
  8. data/lib/AboutYou/Model/Basket/basket_set.rb +60 -62
  9. data/lib/AboutYou/Model/Basket/basket_set_item.rb +8 -9
  10. data/lib/AboutYou/Model/Basket/basket_variant_item.rb +55 -21
  11. data/lib/AboutYou/Model/ProductSearchResult/facet_count.rb +0 -2
  12. data/lib/AboutYou/Model/ProductSearchResult/price_range.rb +2 -2
  13. data/lib/AboutYou/Model/abstract_model.rb +5 -3
  14. data/lib/AboutYou/Model/app.rb +0 -2
  15. data/lib/AboutYou/Model/autocomplete.rb +0 -2
  16. data/lib/AboutYou/Model/basket.rb +91 -19
  17. data/lib/AboutYou/Model/brand.rb +8 -4
  18. data/lib/AboutYou/Model/categories_result.rb +13 -2
  19. data/lib/AboutYou/Model/category.rb +45 -19
  20. data/lib/AboutYou/Model/category_tree.rb +21 -7
  21. data/lib/AboutYou/Model/facet.rb +44 -22
  22. data/lib/AboutYou/Model/facet_group.rb +55 -21
  23. data/lib/AboutYou/Model/facet_group_set.rb +106 -23
  24. data/lib/AboutYou/Model/image.rb +36 -25
  25. data/lib/AboutYou/Model/image_size.rb +8 -5
  26. data/lib/AboutYou/Model/initiate_order.rb +26 -7
  27. data/lib/AboutYou/Model/order.rb +12 -2
  28. data/lib/AboutYou/Model/product.rb +261 -5
  29. data/lib/AboutYou/Model/product_search_result.rb +40 -10
  30. data/lib/AboutYou/Model/{products_ean_result.rb → products_eans_result.rb} +11 -5
  31. data/lib/AboutYou/Model/products_result.rb +13 -14
  32. data/lib/AboutYou/Model/result_error.rb +18 -2
  33. data/lib/AboutYou/Model/variant.rb +87 -26
  34. data/lib/AboutYou/Model/variants_result.rb +31 -15
  35. data/lib/AboutYou/client.rb +7 -0
  36. data/lib/AboutYou/query.rb +7 -2
  37. data/lib/AboutYou/query_builder.rb +22 -3
  38. data/lib/aboutyou-sdk.rb +7 -0
  39. metadata +3 -3
@@ -2,41 +2,76 @@ module AboutYou
2
2
  module SDK
3
3
  module Model
4
4
  ###
5
- #
6
5
  # This class represents an product model
7
- #
8
6
  ###
9
7
  class Product
10
8
  include AbstractModel
11
-
9
+ # product id
12
10
  attr_accessor :id
11
+ # instance of AboutYou::SDK::Factory::DefaultModelFactory
13
12
  attr_accessor :factory
13
+ # product name
14
14
  attr_accessor :name
15
+ # product in sale or not
15
16
  attr_accessor :is_sale
17
+ # product active or not
16
18
  attr_accessor :is_active
19
+ # short description
17
20
  attr_accessor :description_short
21
+ # long description
18
22
  attr_accessor :description_long
23
+ # product min price
19
24
  attr_accessor :min_price
25
+ # product max price
20
26
  attr_accessor :max_price
27
+ # product max savings price
21
28
  attr_accessor :max_savings_price
29
+ # product max savings
22
30
  attr_accessor :max_savings
31
+ # product max savings percentage
23
32
  attr_accessor :max_savings_percentage
33
+ # product brand id
24
34
  attr_accessor :brand_id
35
+ # product merchant id
25
36
  attr_accessor :merchant_id
37
+ # category id paths of this product
26
38
  attr_accessor :category_id_paths
39
+ # facet ids of this product
27
40
  attr_accessor :facet_ids
41
+ # product default image
28
42
  attr_accessor :default_image
43
+ # product default variant
29
44
  attr_accessor :default_variant
45
+ # product selected variant
30
46
  attr_accessor :selected_variant
47
+ # variants of product
31
48
  attr_accessor :variants
49
+ # inactive styles of product
32
50
  attr_accessor :inactive_variants
51
+ # styles of product
33
52
  attr_accessor :styles
53
+ # facet groups of product
34
54
  attr_accessor :facet_groups
55
+ # root categories for product
35
56
  attr_accessor :root_categories
57
+ # active root categories for the product
36
58
  attr_accessor :active_root_categories
59
+ # leaf categories for product
37
60
  attr_accessor :leaf_categories
61
+ # active leaf categories of the product
38
62
  attr_accessor :active_leaf_categories
39
63
 
64
+ ###
65
+ # This method is used for creating an instance of this class by a json_object.
66
+ #
67
+ # * *Args* :
68
+ # - +json_object+ -> the json_object received from the api
69
+ # - +factory+ -> instance of AboutYou::SDK::Factory::DefaultModelFactory
70
+ # - +app_id+ -> app id of the product
71
+ #
72
+ # * *Returns* :
73
+ # - Instance of AboutYou::SDK::Model::Product
74
+ ###
40
75
  def self.create_from_json(json_object, factory, app_id)
41
76
  product = new
42
77
 
@@ -75,6 +110,18 @@ module AboutYou
75
110
  product
76
111
  end
77
112
 
113
+ ###
114
+ # This method is used for parsing the variants of the product
115
+ #
116
+ # * *Args* :
117
+ # - +json_object+ -> the json_object received from the api
118
+ # - +factory+ -> instance of AboutYou::SDK::Factory::DefaultModelFactory
119
+ # - +product+ -> self
120
+ # - +attribute_name+ -> attribute name for parsing [optional]
121
+ #
122
+ # * *Returns* :
123
+ # - Hash containing pairs of variant_id => instance of AboutYou::SDK::Model::Variant
124
+ ###
78
125
  def parse_variants(json_object, factory, product, attribute_name = 'variants')
79
126
  variants = {}
80
127
 
@@ -90,6 +137,16 @@ module AboutYou
90
137
  variants
91
138
  end
92
139
 
140
+ ###
141
+ # This method is used for parsing the styles of the product
142
+ #
143
+ # * *Args* :
144
+ # - +json_object+ -> the json_object received from the api
145
+ # - +factory+ -> instance of AboutYou::SDK::Factory::DefaultModelFactory
146
+ #
147
+ # * *Returns* :
148
+ # - Array containing instances of AboutYou::SDK::Model::Product
149
+ ###
93
150
  def parse_styles(json_object, factory)
94
151
  styles = []
95
152
 
@@ -100,6 +157,15 @@ module AboutYou
100
157
  styles
101
158
  end
102
159
 
160
+ ###
161
+ # This method is used for parsing the category id paths for this product
162
+ #
163
+ # * *Args* :
164
+ # - +json_object+ -> the json_object received from the api
165
+ #
166
+ # * *Returns* :
167
+ # - Array of Strings
168
+ ###
103
169
  def parse_category_id_paths(json_object)
104
170
  paths = []
105
171
 
@@ -113,20 +179,47 @@ module AboutYou
113
179
  paths
114
180
  end
115
181
 
182
+ ###
183
+ # This method is used for parsing the facet ids of this product
184
+ #
185
+ # * *Args* :
186
+ # - +json_object+ -> the json_object received from the api
187
+ #
188
+ # * *Returns* :
189
+ # - a Hash containing pairs of facet_ids => AboutYou::SDK::Model::Facet
190
+ ###
116
191
  def parse_facet_ids(json_object)
117
192
  ids = parse_facet_ids_in_attributes_merged(json_object)
118
193
  ids = parse_facet_ids_in_variants(json_object) if ids.nil?
119
194
  ids = parse_facet_ids_in_brand(json_object) if ids.nil?
120
195
 
121
- !ids.nil? ? ids : []
196
+ !ids.nil? ? ids : {}
122
197
  end
123
198
 
199
+ ###
200
+ # This method is used for parsing the facet ids in merged attributes
201
+ #
202
+ # * *Args* :
203
+ # - +json_object+ -> the json_object received from the api
204
+ #
205
+ # * *Returns* :
206
+ # - nil / a Hash containing pairs of facet_ids => AboutYou::SDK::Model::Facet
207
+ ###
124
208
  def parse_facet_ids_in_attributes_merged(json_object)
125
209
  return nil unless json_object['attributes_merged']
126
210
 
127
211
  parse_attributes_json(json_object['attributes_merged'])
128
212
  end
129
213
 
214
+ ###
215
+ # This method is used for parsing an attribues json object
216
+ #
217
+ # * *Args* :
218
+ # - +attributes_json_object+ -> the attributes_json_object received from the api
219
+ #
220
+ # * *Returns* :
221
+ # - nil / a Hash containing pairs of facet_ids => AboutYou::SDK::Model::Facet
222
+ ###
130
223
  def parse_attributes_json(attributes_json_object)
131
224
  ids = {}
132
225
 
@@ -141,6 +234,15 @@ module AboutYou
141
234
  ids
142
235
  end
143
236
 
237
+ ###
238
+ # This method is used for parsing the facet ids in the variants of this product
239
+ #
240
+ # * *Args* :
241
+ # - +json_object+ -> the json_object received from the api
242
+ #
243
+ # * *Returns* :
244
+ # - Array containing facet ids
245
+ ###
144
246
  def parse_facet_ids_in_variants(json_object)
145
247
  if json_object['variants']
146
248
  ids = []
@@ -159,12 +261,27 @@ module AboutYou
159
261
  nil
160
262
  end
161
263
 
264
+ ###
265
+ # This method is used for parsing the facet ids brands
266
+ #
267
+ # * *Args* :
268
+ # - +json_object+ -> the json_object received from the api
269
+ #
270
+ # * *Returns* :
271
+ # - nil / a Hash containing pairs of facet_ids => AboutYou::SDK::Model::Facet
272
+ ###
162
273
  def parse_facet_ids_in_brand(json_object)
163
274
  return nil unless json_object['brand_id']
164
275
 
165
276
  { '0' => [json_object['brand_id']] }
166
277
  end
167
278
 
279
+ ###
280
+ # This method generates a facet group set for self.facet_ids
281
+ #
282
+ # * *Fails* :
283
+ # - if self.facet_ids is empty
284
+ ###
168
285
  def generate_facet_group_set
169
286
  fail 'RuntimeException! To use this method, you must add the field
170
287
  ProductFields::ATTRIBUTES_MERGED to the "product search" or
@@ -173,18 +290,39 @@ module AboutYou
173
290
  self.facet_groups = AboutYou::SDK::Model::FacetGroupSet.new(facet_ids)
174
291
  end
175
292
 
293
+ ###
294
+ # Getter for the facet group set
295
+ #
296
+ # * *Returns* :
297
+ # - instance of AboutYou::SDK::Model::FacetGroupSet
298
+ ###
176
299
  def facet_group_set
177
300
  generate_facet_group_set unless @facet_groups
178
301
 
179
302
  @facet_groups
180
303
  end
181
304
 
305
+ ###
306
+ # This method is used for getting a category
307
+ #
308
+ # * *Args* :
309
+ # - +active+ -> Boolean determining whether the category has to be active or not
310
+ #
311
+ # * *Returns* :
312
+ # - nil / instance of AboutYou::SDK::Model::Category
313
+ ###
182
314
  def category(active = false)
183
- return nil unless category_id_paths
315
+ return unless category_id_paths
184
316
 
185
317
  leaf_categories(active)[leaf_categories(active).keys[0]]
186
318
  end
187
319
 
320
+ ###
321
+ # Getter for the deepest category
322
+ #
323
+ # * *Returns* :
324
+ # - nil / instance of AboutYou::SDK::Model::Category
325
+ ###
188
326
  def category_with_longest_active_path
189
327
  return nil unless category_id_paths
190
328
 
@@ -196,10 +334,25 @@ module AboutYou
196
334
  nil
197
335
  end
198
336
 
337
+ ###
338
+ # Getter for the leaf categories
339
+ #
340
+ # * *Args* :
341
+ # - +active_only+ -> Boolean controlling whether only active categories should be returned or not
342
+ #
343
+ # * *Returns* :
344
+ # - Array containing instances of AboutYou::SDK::Model::Category
345
+ ###
199
346
  def leaf_categories(active_only = AboutYou::SDK::Model::Category::ACTIVE_ONLY)
200
347
  factory.category_manager.categories(leaf_category_ids, active_only)
201
348
  end
202
349
 
350
+ ###
351
+ # Getter for the root category ids
352
+ #
353
+ # * *Returns* :
354
+ # - Array containing category_ids
355
+ ###
203
356
  def root_category_ids
204
357
  root_category = []
205
358
  category_id_paths.each do |category_id_path|
@@ -209,6 +362,12 @@ module AboutYou
209
362
  root_category.uniq
210
363
  end
211
364
 
365
+ ###
366
+ # Getter for the leaf category ids
367
+ #
368
+ # * *Returns* :
369
+ # - Array containing category_ids
370
+ ###
212
371
  def leaf_category_ids
213
372
  leaf_categories = []
214
373
  category_id_paths.each do |category_id_path|
@@ -218,18 +377,54 @@ module AboutYou
218
377
  leaf_categories.uniq
219
378
  end
220
379
 
380
+ ###
381
+ # Getter for the categories
382
+ #
383
+ # * *Args* :
384
+ # - +active_only+ -> Boolean controlling whether only active categories should be returned or not
385
+ #
386
+ # * *Returns* :
387
+ # - Array containing instances of AboutYou::SDK::Model::Category
388
+ ###
221
389
  def categories(active_only = AboutYou::SDK::Model::Category::ACTIVE_ONLY)
222
390
  root_categories(active_only)
223
391
  end
224
392
 
393
+ ###
394
+ # Getter for the root categories
395
+ #
396
+ # * *Args* :
397
+ # - +active_only+ -> Boolean controlling whether only active categories should be returned or not
398
+ #
399
+ # * *Returns* :
400
+ # - Array containing instances of AboutYou::SDK::Model::Category
401
+ ###
225
402
  def root_categories(active_only = Category::ACTIVE_ONLY)
226
403
  factory.category_manager.categories(root_category_ids, active_only)
227
404
  end
228
405
 
406
+ ###
407
+ # Getter for facets for a certain group id
408
+ #
409
+ # * *Args* :
410
+ # - +group_id+ -> group_id used for searching
411
+ #
412
+ # * *Returns* :
413
+ # - [] / instance of AboutYou::SDK::Model::FacetGroup
414
+ ###
229
415
  def group_facets(group_id)
230
416
  facet_group_set.group(group_id) ? group.facets : []
231
417
  end
232
418
 
419
+ ###
420
+ # Getter for all facetGroups for a certain group id
421
+ #
422
+ # * *Args* :
423
+ # - +group_id+ -> group_id used for searching
424
+ #
425
+ # * *Returns* :
426
+ # - Hash containing pairs of unique_group_key => group_id
427
+ ###
233
428
  def facet_groups(group_id)
234
429
  all_groups = {}
235
430
 
@@ -242,6 +437,15 @@ module AboutYou
242
437
  all_groups
243
438
  end
244
439
 
440
+ ###
441
+ # Getter for the selectable facet groups
442
+ #
443
+ # * *Args* :
444
+ # - +selected_facet_group_set+ -> selected instance of AboutYou::SDK::Model::FacetGroupSet
445
+ #
446
+ # * *Returns* :
447
+ # - Hash containing pairs of unique_group_key => instance of AboutYou::SDK::Model::FacetGroup
448
+ ###
245
449
  def selectable_facet_groups(selected_facet_group_set)
246
450
  all_groups = {}
247
451
  selected_group_ids = selected_facet_group_set.group_ids
@@ -279,6 +483,15 @@ module AboutYou
279
483
  all_groups
280
484
  end
281
485
 
486
+ ###
487
+ # Getter for the excluded groups
488
+ #
489
+ # * *Args* :
490
+ # - +selected_facet_group_set+ -> selected instance of AboutYou::SDK::Model::FacetGroupSet
491
+ #
492
+ # * *Returns* :
493
+ # - Hash containing pairs of unique_group_key => instance of AboutYou::SDK::Model::FacetGroup
494
+ ###
282
495
  def excluded_facet_groups(selected_facet_group_set)
283
496
  all_groups = {}
284
497
 
@@ -307,6 +520,12 @@ module AboutYou
307
520
  all_groups
308
521
  end
309
522
 
523
+ ###
524
+ # Getter for the brand
525
+ #
526
+ # * *Returns* :
527
+ # - Instance of AboutYou::SDK::Model::Facet
528
+ ###
310
529
  def brand
311
530
  facet_group_set.facet(
312
531
  AboutYou::SDK::Model::Facet::FACET_BRAND,
@@ -314,10 +533,28 @@ module AboutYou
314
533
  )
315
534
  end
316
535
 
536
+ ###
537
+ # This method returns a variant by a certain variant_id
538
+ #
539
+ # * *Args* :
540
+ # - +variant_id+ -> variant id used for searching
541
+ #
542
+ # * *Returns* :
543
+ # - nil / instance of AboutYou::SDK::Model::Variant
544
+ ###
317
545
  def variant_by_id(variant_id)
318
546
  variants[variant_id] ? variants[variant_id] : nil
319
547
  end
320
548
 
549
+ ###
550
+ # This method searches for variants by a certain ean
551
+ #
552
+ # * *Args* :
553
+ # - +ean+ -> ean used for searching
554
+ #
555
+ # * *Returns* :
556
+ # - [] / Array containing instances of AboutYou::SDK::Model::Variant
557
+ ###
321
558
  def variants_by_ean(ean)
322
559
  variants = []
323
560
 
@@ -328,6 +565,15 @@ module AboutYou
328
565
  variants
329
566
  end
330
567
 
568
+ ###
569
+ # This method searches for a variant by a certain facet group set
570
+ #
571
+ # * *Args* :
572
+ # - +facet_group_set+ -> facet_group_set used for searching
573
+ #
574
+ # * *Returns* :
575
+ # - nil / instance of AboutYou::SDK::Model::Variant
576
+ ###
331
577
  def variant_by_facet(facet_group_set)
332
578
  key = facet_group_set.unique_key
333
579
  variants.each do |variant|
@@ -337,6 +583,16 @@ module AboutYou
337
583
  nil
338
584
  end
339
585
 
586
+ ###
587
+ # This method searches for variants by a certain facet_id and group_id
588
+ #
589
+ # * *Args* :
590
+ # - +facet_id+ -> facet_id used for searching
591
+ # - +group_id+ -> group_id used for searching
592
+ #
593
+ # * *Returns* :
594
+ # - [] / Array containing instances of AboutYou::SDK::Model::Variant
595
+ ###
340
596
  def variants_by_facet_id(facet_id, group_id)
341
597
  variants = []
342
598