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
@@ -3,23 +3,22 @@ module AboutYou
3
3
  module Model
4
4
  ###
5
5
  # BasketSetItem is a class used for adding a variant set item into the basket
6
- #
7
- # @see \Collins\ShopApi\Model\Variant
8
- # @see \Collins\ShopApi\Model\Basket
9
- # @see \Collins\ShopApi
10
6
  ###
11
7
  class BasketSetItem
12
8
  include AboutYou::SDK::Model::BasketVariantItem
13
-
9
+ # erorr code if a product is not included
14
10
  ERROR_CODE_PRODUCT_NOT_INCLUDED = 1001
15
11
 
16
12
  ###
17
- # @param object $json_object The basket data.
18
- # @param Product[] $products
13
+ # This method is used for creating a basket set item from a given api json
14
+ # response. It is best practice to use this method.
19
15
  #
20
- # @return BasketVariantItem
16
+ # * *Args* :
17
+ # - +json_object+ -> the api response key
18
+ # - +products+ -> Array of products
21
19
  #
22
- # @throws \Collins\ShopApi\Exception\UnexpectedResultException
20
+ # * *Returns* :
21
+ # - an instance of AboutYou::SDK::Model::BasketSetItem
23
22
  ###
24
23
  def create_from_json(json_object, products)
25
24
  item = new(
@@ -3,23 +3,29 @@ module AboutYou
3
3
  module Model
4
4
  ###
5
5
  # BasketVairantItem is a class representing a basket variant item
6
- #
7
- # @see \Collins\ShopApi\Model\Variant
8
- # @see \Collins\ShopApi\Model\Basket
9
- # @see \Collins\ShopApi
10
6
  ###
11
7
  module BasketVariantItem
8
+ # the json object from which this instance was created from
12
9
  attr_accessor :json_object
10
+ # the product of this variant item
13
11
  attr_accessor :product
12
+ # the variant of this variant item
14
13
  attr_accessor :variant
14
+ # the variant id of this variant item
15
15
  attr_accessor :variant_id
16
+ # the app id of this variant item
16
17
  attr_accessor :app_id
17
18
 
18
19
  ###
19
- # Constructor.
20
+ # Constructor for the AboutYou::SDK::Model::BasketVariantItem class
20
21
  #
21
- # @param integer $variant_id
22
- # @param array $additional_data
22
+ # * *Args* :
23
+ # - +variant_id+ -> the id of the variant item
24
+ # - +additional_data+ -> additional data of the variant item
25
+ # - +app_id+ -> the app id for the variant item
26
+ #
27
+ # * *Returns* :
28
+ # - an instance of AboutYou::SDK::Model::BasketVariantItem
23
29
  ###
24
30
  def initialize(variant_id, additional_data = nil, app_id = nil)
25
31
  check_variant_id(variant_id)
@@ -27,66 +33,79 @@ module AboutYou
27
33
  self.variant_od = variant_id
28
34
  self.additional_data = additional_data
29
35
 
30
- return unless app_id
36
+ return self unless app_id
31
37
 
32
38
  check_app_id(app_id)
33
39
  self.app_id = app_id
40
+
41
+ self
34
42
  end
35
43
 
36
44
  ###
37
- # @return boolean
45
+ # This method checks if there are errors in the variant item
46
+ #
47
+ # * *Returns* :
48
+ # - Boolean determining whether there are errors or not
38
49
  ###
39
50
  def errors?
40
51
  error_code > 0
41
52
  end
42
53
 
43
54
  ###
44
- # Get the total price.
55
+ # Getter for the total price
45
56
  #
46
- # @return integer
57
+ # * *Returns* :
58
+ # - an Integer containing the total price
47
59
  ###
48
60
  def total_price
49
61
  json_object['total_price']
50
62
  end
51
63
 
52
64
  ###
53
- # Get the tax.
65
+ # Getter for the tax
54
66
  #
55
- # @return integer
67
+ # * *Returns* :
68
+ # - an Integer containing the tax
56
69
  ###
57
70
  def tax
58
71
  json_object['tax']
59
72
  end
60
73
 
61
74
  ###
62
- # Get the value added tax.
75
+ # Getter for the total vat
63
76
  #
64
- # @return integer
77
+ # * *Returns* :
78
+ # - an Integer containing the total vat
65
79
  ###
66
80
  def total_vat
67
81
  json_object['total_vat']
68
82
  end
69
83
 
70
84
  ###
71
- # @return integer
85
+ # Getter for the total net
86
+ #
87
+ # * *Returns* :
88
+ # - an Integer containing the total net
72
89
  ###
73
90
  def total_net
74
91
  json_object['total_net']
75
92
  end
76
93
 
77
94
  ###
78
- # Get the variant old price in euro cents.
95
+ # Getter for the old price of the variant
79
96
  #
80
- # @return integer
97
+ # * *Returns* :
98
+ # - an Integer containing the old price of the variant
81
99
  ###
82
100
  def old_price
83
101
  variant.old_price
84
102
  end
85
103
 
86
104
  ###
87
- # Get the product variant.
105
+ # Getter for the variant
88
106
  #
89
- # @return Variant
107
+ # * *Returns* :
108
+ # - an instance of AboutYou::SDK::Model::Variant
90
109
  ###
91
110
  def variant
92
111
  self.variant = product.variant_by_id(variant_id) unless
@@ -96,7 +115,10 @@ module AboutYou
96
115
  end
97
116
 
98
117
  ###
99
- # @return string
118
+ # This method is used for creating a unique key for the basket set
119
+ #
120
+ # * *Returns* :
121
+ # - a String containing a unique key for the basket set
100
122
  ###
101
123
  def unique_key
102
124
  key = variant_id
@@ -108,11 +130,23 @@ module AboutYou
108
130
  key
109
131
  end
110
132
 
133
+ ###
134
+ # This method checks if a variant id is valid
135
+ #
136
+ # * *Fails* :
137
+ # - if variant_id is not an integer
138
+ ###
111
139
  def check_variant_id(variant_id)
112
140
  fail '\InvalidArgumentException! the variant id must be
113
141
  an integer' unless variant_id.is_a?(Integer)
114
142
  end
115
143
 
144
+ ###
145
+ # This method checks if an app id is valid
146
+ #
147
+ # * *Fails* :
148
+ # - if app_id is not an integer
149
+ ###
116
150
  def check_app_id(app_id)
117
151
  fail '\InvalidArgumentException! the app id must be
118
152
  an integer' unless app_id.is_a?(Integer)
@@ -3,8 +3,6 @@ module AboutYou
3
3
  module Model
4
4
  ###
5
5
  # This class represents a FacetCount model.
6
- #
7
- # author:: Collins GmbH & Co KG
8
6
  ###
9
7
  class FacetCount
10
8
  # The Facet
@@ -17,9 +17,9 @@ module AboutYou
17
17
  attr_accessor :min
18
18
  # max value of the price range
19
19
  attr_accessor :max
20
- #
20
+ # mean
21
21
  attr_accessor :mean
22
- #
22
+ # sum
23
23
  attr_accessor :sum
24
24
 
25
25
  ###
@@ -1,12 +1,14 @@
1
1
  module AboutYou
2
2
  module SDK
3
+ ###
4
+ # The Model namespace
5
+ ###
3
6
  module Model
4
7
  ###
5
- # This Module is abstract and represents a model which has a shop_api attribute
6
- #
7
- # author:: Collins GmbH & Co KG
8
+ # This Module represents a model which has a shop_api attribute
8
9
  ###
9
10
  module AbstractModel
11
+ # instance of AY
10
12
  attr_accessor :shop_api
11
13
  end
12
14
  end
@@ -3,8 +3,6 @@ module AboutYou
3
3
  module Model
4
4
  ###
5
5
  # This Class represents an app model
6
- #
7
- # author:: Collins GmbH & Co KG
8
6
  ###
9
7
  class App
10
8
  # the id of the app
@@ -3,8 +3,6 @@ module AboutYou
3
3
  module Model
4
4
  ###
5
5
  # This Class represents an autocomplete model
6
- #
7
- # author:: Collins GmbH & Co KG
8
6
  ###
9
7
  class Autocomplete
10
8
  # this constant is used for values which are not requested
@@ -3,28 +3,38 @@ module AboutYou
3
3
  module Model
4
4
  ###
5
5
  # This Class represents a basket model
6
- #
7
- # author:: Collins GmbH & Co KG
8
6
  ###
9
7
  class Basket
10
8
  # array of items in the basket
11
9
  attr_accessor :items
12
10
  # errors of the basket
13
11
  attr_accessor :errors
12
+ # Integer count of unique variants
14
13
  attr_accessor :unique_variant_count
14
+ # Array of products
15
15
  attr_accessor :products
16
+ # Integer containing the total price of the basket
16
17
  attr_accessor :total_price
18
+ # Integer containing the total net woth of the basket
17
19
  attr_accessor :total_net
20
+ # Integer containing the total vat woth of the basket
18
21
  attr_accessor :total_vat
22
+ # Integer containing the total amount of the basket
19
23
  attr_accessor :total_amount
24
+ # Array containing the deleted items in the basket
20
25
  attr_accessor :deleted_items
26
+ # Array containing the updated items in the basket
21
27
  attr_accessor :updated_items
22
28
 
23
29
  ###
24
- # @param object $json_object
25
- # @param ModelFactoryInterface $factory
30
+ # This method is used for creating an instance of this class by a json_object.
26
31
  #
27
- # @return Basket
32
+ # * *Args* :
33
+ # - +json_object+ -> the json_object received from the api
34
+ # - +factory+ -> instance of AboutYou::SDK::Factory::DefaultModelFactory
35
+ #
36
+ # * *Returns* :
37
+ # - Instance of AboutYou::SDK::Model::Basket
28
38
  ###
29
39
  def self.create_from_json(json_object, factory)
30
40
  basket = new
@@ -41,21 +51,38 @@ module AboutYou
41
51
  end
42
52
 
43
53
  ###
44
- # @return boolean
54
+ # This method checks if there are errors in the basket set
55
+ #
56
+ # * *Returns* :
57
+ # - Boolean determining whether there are errors or not
45
58
  ###
46
59
  def errors?
47
60
  errors.count > 0
48
61
  end
49
62
 
50
63
  ###
51
- # @param $itemId
64
+ # This method gets an item from the basket for a given item id
65
+ #
66
+ # * *Args* :
67
+ # - +item_id+ -> the id used for searching in the basket
52
68
  #
53
- # @return BasketItem|BasketSet|null
69
+ # * *Returns* :
70
+ # - instance of AboutYou::SDK::Model::BasketItem or null if not found
54
71
  ###
55
72
  def item(item_id)
56
73
  return items[item_id] if items.key?(item_id)
57
74
  end
58
75
 
76
+ ###
77
+ # This methods creates a Hash containing pairs of
78
+ # unique_item_key => instance of AboutYou::SDK::Model::BasketItem
79
+ # It only contains 1 entry per unique_item_key and will increase the amount
80
+ # if more items are given
81
+ #
82
+ # * *Returns* :
83
+ # - Hash containing pairs of
84
+ # unique_item_key => instance of AboutYou::SDK::Model::BasketItem
85
+ ###
59
86
  def collected_items
60
87
  items = self.items
61
88
  items_merged = {}
@@ -81,8 +108,11 @@ module AboutYou
81
108
  end
82
109
 
83
110
  ###
84
- # build order line for update query
85
- # @return array
111
+ # This method builds the order lines for the update query
112
+ #
113
+ # * *Returns* :
114
+ # - Array containing either Hashes with pairs of 'delete' => item_id
115
+ # or instances of AboutYou::SDK::Model::BasketItem
86
116
  ###
87
117
  def order_lines_array
88
118
  order_lines = []
@@ -98,6 +128,16 @@ module AboutYou
98
128
  order_lines
99
129
  end
100
130
 
131
+ ###
132
+ # This method is used for parsing the items in the basket
133
+ #
134
+ # * *Args* :
135
+ # - +json_object+ -> the json object received from the api
136
+ # - +factory+ -> Instance of AboutYou::SDK::Factory::DefaultModelFactory
137
+ #
138
+ # * *Returns* :
139
+ # - Instance of AboutYou::SDK::Model::Basket
140
+ ###
101
141
  def parse_items(json_object, factory)
102
142
  products = {}
103
143
 
@@ -125,12 +165,18 @@ module AboutYou
125
165
 
126
166
  vids = vids.uniq
127
167
  self.uniqueVariantCount = vids.count
168
+
169
+ self
128
170
  end
129
171
 
130
172
  ###
131
- # @param string $itemId
173
+ # This method is used for deleting an item from the basket
174
+ #
175
+ # * *Args* :
176
+ # - +item_id+ -> the item_id for which the item should be deleted
132
177
  #
133
- # @return $this
178
+ # * *Returns* :
179
+ # - Instance of AboutYou::SDK::Model::Basket
134
180
  ###
135
181
  def delete_item(item_id)
136
182
  deleted_items[item_id] = item_id
@@ -139,9 +185,13 @@ module AboutYou
139
185
  end
140
186
 
141
187
  ###
142
- # @param string[] $itemIds
188
+ # This method is used for deleting items from the basket
143
189
  #
144
- # @return $this
190
+ # * *Args* :
191
+ # - +item_ids+ -> Array containing item ids for which items should be deleted
192
+ #
193
+ # * *Returns* :
194
+ # - Instance of AboutYou::SDK::Model::Basket
145
195
  ###
146
196
  def delete_items(item_ids)
147
197
  item_ids.each do |item_id|
@@ -152,7 +202,10 @@ module AboutYou
152
202
  end
153
203
 
154
204
  ###
155
- # @return $this
205
+ # This method is used for deleting all items from the basket
206
+ #
207
+ # * *Returns* :
208
+ # - Instance of AboutYou::SDK::Model::Basket
156
209
  ###
157
210
  def delete_all_items
158
211
  items = self.items
@@ -168,9 +221,13 @@ module AboutYou
168
221
  end
169
222
 
170
223
  ###
171
- # @param BasketItem $basketItem
224
+ # This method is used for updating an item in the basket
225
+ #
226
+ # * *Args* :
227
+ # - +basket_item+ -> instance of AboutYou::SDK::Model::BasketItem
172
228
  #
173
- # @return $this
229
+ # * *Returns* :
230
+ # - Instance of AboutYou::SDK::Model::Basket
174
231
  ###
175
232
  def update_item(basket_item)
176
233
  item = {
@@ -189,9 +246,13 @@ module AboutYou
189
246
  end
190
247
 
191
248
  ###
192
- # @param BasketSet $basketSet
249
+ # This method is used for updating an item set in the basket
193
250
  #
194
- # @return $this
251
+ # * *Args* :
252
+ # - +basket_item+ -> instance of AboutYou::SDK::Model::BasketSet
253
+ #
254
+ # * *Returns* :
255
+ # - Instance of AboutYou::SDK::Model::Basket
195
256
  ###
196
257
  def update_item_set(basket_set)
197
258
  items = basket_set.items
@@ -222,6 +283,17 @@ module AboutYou
222
283
  self
223
284
  end
224
285
 
286
+ ###
287
+ # checks if certain additional_data is valid to set for a basket or not
288
+ #
289
+ # * *Args* :
290
+ # - +add_data+ -> the desired data to check
291
+ # - +_img_url_required+ -> unused operator
292
+ #
293
+ # * *Fails* :
294
+ # - if add_data doesnt have a description
295
+ # - if add_data doesnt have valid internal infos
296
+ ###
225
297
  def check_additional_data(add_data = nil, _img_url_required = false)
226
298
  fail 'InvalidArgumentException! description is required
227
299
  in additional data' if add_data && !add_data.key?('description')