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.
- checksums.yaml +8 -8
- data/lib/AboutYou/CacheProvider/dalli.rb +3 -0
- data/lib/AboutYou/Criteria/product_fields.rb +3 -0
- data/lib/AboutYou/Criteria/product_search_criteria.rb +8 -8
- data/lib/AboutYou/Factory/default_model_factory.rb +15 -2
- data/lib/AboutYou/Model/Basket/abstract_basket_item.rb +25 -20
- data/lib/AboutYou/Model/Basket/basket_item.rb +27 -27
- data/lib/AboutYou/Model/Basket/basket_set.rb +60 -62
- data/lib/AboutYou/Model/Basket/basket_set_item.rb +8 -9
- data/lib/AboutYou/Model/Basket/basket_variant_item.rb +55 -21
- data/lib/AboutYou/Model/ProductSearchResult/facet_count.rb +0 -2
- data/lib/AboutYou/Model/ProductSearchResult/price_range.rb +2 -2
- data/lib/AboutYou/Model/abstract_model.rb +5 -3
- data/lib/AboutYou/Model/app.rb +0 -2
- data/lib/AboutYou/Model/autocomplete.rb +0 -2
- data/lib/AboutYou/Model/basket.rb +91 -19
- data/lib/AboutYou/Model/brand.rb +8 -4
- data/lib/AboutYou/Model/categories_result.rb +13 -2
- data/lib/AboutYou/Model/category.rb +45 -19
- data/lib/AboutYou/Model/category_tree.rb +21 -7
- data/lib/AboutYou/Model/facet.rb +44 -22
- data/lib/AboutYou/Model/facet_group.rb +55 -21
- data/lib/AboutYou/Model/facet_group_set.rb +106 -23
- data/lib/AboutYou/Model/image.rb +36 -25
- data/lib/AboutYou/Model/image_size.rb +8 -5
- data/lib/AboutYou/Model/initiate_order.rb +26 -7
- data/lib/AboutYou/Model/order.rb +12 -2
- data/lib/AboutYou/Model/product.rb +261 -5
- data/lib/AboutYou/Model/product_search_result.rb +40 -10
- data/lib/AboutYou/Model/{products_ean_result.rb → products_eans_result.rb} +11 -5
- data/lib/AboutYou/Model/products_result.rb +13 -14
- data/lib/AboutYou/Model/result_error.rb +18 -2
- data/lib/AboutYou/Model/variant.rb +87 -26
- data/lib/AboutYou/Model/variants_result.rb +31 -15
- data/lib/AboutYou/client.rb +7 -0
- data/lib/AboutYou/query.rb +7 -2
- data/lib/AboutYou/query_builder.rb +22 -3
- data/lib/aboutyou-sdk.rb +7 -0
- metadata +3 -3
@@ -2,29 +2,47 @@ module AboutYou
|
|
2
2
|
module SDK
|
3
3
|
module Model
|
4
4
|
###
|
5
|
-
#
|
6
5
|
# This class represents a product search result model
|
7
|
-
#
|
8
6
|
###
|
9
7
|
class ProductSearchResult
|
8
|
+
# Array of instances of AboutYou::SDK::Model::Product
|
10
9
|
attr_accessor :products
|
10
|
+
# String page hash
|
11
11
|
attr_accessor :page_hash
|
12
|
+
# Integer count of products
|
12
13
|
attr_accessor :product_count
|
14
|
+
# Integer count of products in sale
|
13
15
|
attr_accessor :sale_counts
|
16
|
+
# Array containing instances of AboutYou::SDK::Model::PriceRange
|
14
17
|
attr_accessor :price_ranges
|
18
|
+
# Array containing instances of AboutYou::SDK::Model::Facet
|
15
19
|
attr_accessor :facets
|
20
|
+
# Array containing instances of AboutYou::SDK::Model::Category
|
16
21
|
attr_accessor :categories
|
22
|
+
# raw facets
|
17
23
|
attr_accessor :raw_facets
|
18
24
|
|
25
|
+
###
|
26
|
+
# Constructor for the AboutYou::SDK::Model::ProductSearchResult class
|
27
|
+
#
|
28
|
+
# * *Returns* :
|
29
|
+
# - an instance of AboutYou::SDK::Model::ProductSearchResult
|
30
|
+
###
|
19
31
|
def initialize
|
20
32
|
self.products = {}
|
33
|
+
|
34
|
+
self
|
21
35
|
end
|
22
36
|
|
23
37
|
###
|
24
|
-
#
|
25
|
-
#
|
38
|
+
# This method is used for creating an instance of this class by a json_object.
|
39
|
+
#
|
40
|
+
# * *Args* :
|
41
|
+
# - +json_object+ -> the json_object received from the api
|
42
|
+
# - +factory+ -> instance of AboutYou::SDK::Factory::DefaultModelFactory
|
26
43
|
#
|
27
|
-
#
|
44
|
+
# * *Returns* :
|
45
|
+
# - Instance of AboutYou::SDK::Model::ProductSearchResult
|
28
46
|
###
|
29
47
|
def self.create_from_json(json_object, factory)
|
30
48
|
product_search_result = new
|
@@ -51,6 +69,13 @@ module AboutYou
|
|
51
69
|
product_search_result
|
52
70
|
end
|
53
71
|
|
72
|
+
###
|
73
|
+
# This method is used for parsing the facets of the search result
|
74
|
+
#
|
75
|
+
# * *Args* :
|
76
|
+
# - +json_object+ -> the json_object received from the api
|
77
|
+
# - +factory+ -> instance of AboutYou::SDK::Factory::DefaultModelFactory
|
78
|
+
###
|
54
79
|
def parse_facets(json_object, factory)
|
55
80
|
self.categories = factory.create_categories_facets(
|
56
81
|
json_object['categories']
|
@@ -66,9 +91,10 @@ module AboutYou
|
|
66
91
|
end
|
67
92
|
|
68
93
|
###
|
69
|
-
#
|
94
|
+
# Getter for the min price
|
70
95
|
#
|
71
|
-
# *
|
96
|
+
# * *Returns* :
|
97
|
+
# - nil / Integer
|
72
98
|
###
|
73
99
|
def min_price
|
74
100
|
return nil if price_ranges.empty?
|
@@ -82,9 +108,10 @@ module AboutYou
|
|
82
108
|
end
|
83
109
|
|
84
110
|
###
|
85
|
-
#
|
111
|
+
# Getter for the max price
|
86
112
|
#
|
87
|
-
#
|
113
|
+
# * *Returns* :
|
114
|
+
# - nil / Integer
|
88
115
|
###
|
89
116
|
def max_price
|
90
117
|
return nil if price_ranges.empty?
|
@@ -98,7 +125,10 @@ module AboutYou
|
|
98
125
|
end
|
99
126
|
|
100
127
|
###
|
101
|
-
#
|
128
|
+
# Getter for the category tree
|
129
|
+
#
|
130
|
+
# * *Returns* :
|
131
|
+
# - [] / Array containing instances of AboutYou::SDK::Model::Category
|
102
132
|
###
|
103
133
|
def category_tree
|
104
134
|
top_level_categories = []
|
@@ -2,21 +2,27 @@ module AboutYou
|
|
2
2
|
module SDK
|
3
3
|
module Model
|
4
4
|
###
|
5
|
-
#
|
6
5
|
# this class represents a products ean result model
|
7
|
-
#
|
8
6
|
###
|
9
7
|
class ProductsEansResult
|
8
|
+
# Array of not found eans
|
10
9
|
attr_accessor :eans_not_found
|
10
|
+
# String page hash
|
11
11
|
attr_accessor :page_hash
|
12
|
+
# Array of errors
|
12
13
|
attr_accessor :errors
|
14
|
+
# Array of instances of AboutYou::SDK::Model::Product
|
13
15
|
attr_accessor :products
|
14
16
|
|
15
17
|
###
|
16
|
-
#
|
17
|
-
# @param ModelFactoryInterface $factory
|
18
|
+
# This method is used for creating an instance of this class by a json_object.
|
18
19
|
#
|
19
|
-
#
|
20
|
+
# * *Args* :
|
21
|
+
# - +json_object+ -> the json_object received from the api
|
22
|
+
# - +factory+ -> instance of AboutYou::SDK::Factory::DefaultModelFactory
|
23
|
+
#
|
24
|
+
# * *Returns* :
|
25
|
+
# - Instance of AboutYou::SDK::Model::ProductsEansResult
|
20
26
|
###
|
21
27
|
def self.create_from_json(json_object, factory)
|
22
28
|
products_ean_result = new
|
@@ -2,23 +2,29 @@ module AboutYou
|
|
2
2
|
module SDK
|
3
3
|
module Model
|
4
4
|
###
|
5
|
-
#
|
6
5
|
# This class represents a products result model
|
7
|
-
#
|
8
6
|
###
|
9
7
|
class ProductsResult
|
10
8
|
include AbstractModel
|
11
9
|
|
12
|
-
|
10
|
+
# Array of not found product ids
|
11
|
+
attr_accessor :productsNotFound
|
12
|
+
# String page hash
|
13
13
|
attr_accessor :page_hash
|
14
|
+
# Array of errors
|
14
15
|
attr_accessor :errors
|
16
|
+
# Array of instances of AboutYou::SDK::Model::Product
|
15
17
|
attr_accessor :products
|
16
18
|
|
17
19
|
###
|
18
|
-
#
|
19
|
-
# @param ModelFactoryInterface $factory
|
20
|
+
# This method is used for creating an instance of this class by a json_object.
|
20
21
|
#
|
21
|
-
#
|
22
|
+
# * *Args* :
|
23
|
+
# - +json_object+ -> the json_object received from the api
|
24
|
+
# - +factory+ -> instance of AboutYou::SDK::Factory::DefaultModelFactory
|
25
|
+
#
|
26
|
+
# * *Returns* :
|
27
|
+
# - Instance of AboutYou::SDK::Model::ProductsResult
|
22
28
|
###
|
23
29
|
def self.create_from_json(json_object, factory)
|
24
30
|
products_result = new
|
@@ -31,7 +37,7 @@ module AboutYou
|
|
31
37
|
if json_object['ids']
|
32
38
|
json_object['ids'].each do |key, json_product|
|
33
39
|
if json_product['error_code']
|
34
|
-
products_result.
|
40
|
+
products_result.productsNotFound.push(key)
|
35
41
|
products_result.errors.push(json_product)
|
36
42
|
next
|
37
43
|
end
|
@@ -43,13 +49,6 @@ module AboutYou
|
|
43
49
|
|
44
50
|
products_result
|
45
51
|
end
|
46
|
-
|
47
|
-
###
|
48
|
-
# @return integer[] array of product ids
|
49
|
-
###
|
50
|
-
def products_not_found
|
51
|
-
ids_not_found
|
52
|
-
end
|
53
52
|
end
|
54
53
|
end
|
55
54
|
end
|
@@ -2,21 +2,37 @@ module AboutYou
|
|
2
2
|
module SDK
|
3
3
|
module Model
|
4
4
|
###
|
5
|
-
#
|
6
5
|
# This class represents an result error model
|
7
|
-
#
|
8
6
|
###
|
9
7
|
module ResultError
|
8
|
+
# error ident
|
10
9
|
attr_accessor :error_ident
|
10
|
+
# error code
|
11
11
|
attr_accessor :error_code
|
12
|
+
# error message
|
12
13
|
attr_accessor :error_message
|
13
14
|
|
15
|
+
###
|
16
|
+
# Constructor for the AboutYou::SDK::Model::ResultError class
|
17
|
+
#
|
18
|
+
# * *Args* :
|
19
|
+
# - +json_object+ -> the json_object received from the api
|
20
|
+
#
|
21
|
+
# * *Returns* :
|
22
|
+
# - an instance of AboutYou::SDK::Model::ResultError
|
23
|
+
###
|
14
24
|
def initialize(json_object)
|
15
25
|
parse_error_result(json_object)
|
16
26
|
|
17
27
|
self
|
18
28
|
end
|
19
29
|
|
30
|
+
###
|
31
|
+
# This method parses the error result
|
32
|
+
#
|
33
|
+
# * *Args* :
|
34
|
+
# - +json_object+ -> the json_object received from the api
|
35
|
+
###
|
20
36
|
def parse_error_result(json_object)
|
21
37
|
self.error_ident = json_object.key?('error_ident') ? String(json_object['error_ident']) : nil
|
22
38
|
self.error_code = json_object.key?('error_code') ? Integer(json_object['error_code']) : 0
|
@@ -2,42 +2,68 @@ module AboutYou
|
|
2
2
|
module SDK
|
3
3
|
module Model
|
4
4
|
###
|
5
|
-
#
|
6
5
|
# This class represents a variant model
|
7
|
-
#
|
8
6
|
###
|
9
7
|
class Variant
|
10
8
|
include AbstractModel
|
11
|
-
|
9
|
+
# instance of AboutYou::SDK::Factory::DefaultModelFactory
|
12
10
|
attr_accessor :factory
|
11
|
+
# instance of AboutYou::SDK::Model::Product
|
13
12
|
attr_accessor :product
|
13
|
+
# Integer id
|
14
14
|
attr_accessor :id
|
15
|
+
# Array of AboutYou::SDK::Model::Image
|
15
16
|
attr_accessor :images
|
17
|
+
# instance of AboutYou::SDK::Model::Image
|
16
18
|
attr_accessor :selected_image
|
19
|
+
# Integer about number id
|
17
20
|
attr_accessor :about_number
|
21
|
+
# Array of AboutYou::SDK::Model::FacetGroup
|
18
22
|
attr_accessor :facet_groups
|
23
|
+
# String ean
|
19
24
|
attr_accessor :ean
|
25
|
+
# Boolean is variant default for product or not
|
20
26
|
attr_accessor :is_default
|
27
|
+
# Integer price
|
21
28
|
attr_accessor :price
|
29
|
+
# Integer old price
|
22
30
|
attr_accessor :old_price
|
31
|
+
# Integer retail price
|
23
32
|
attr_accessor :retail_price
|
33
|
+
# additional information
|
24
34
|
attr_accessor :additional_info
|
35
|
+
# integer quantity
|
25
36
|
attr_accessor :quantity
|
37
|
+
# Array of Integer facet_ids
|
26
38
|
attr_accessor :facet_ids
|
39
|
+
# Integer first active data
|
27
40
|
attr_accessor :first_active_date
|
41
|
+
# integer first Sale data
|
28
42
|
attr_accessor :first_sale_date
|
43
|
+
# Integer creation date
|
29
44
|
attr_accessor :created_date
|
45
|
+
# Integer update Date
|
30
46
|
attr_accessor :updated_date
|
47
|
+
# String color
|
31
48
|
attr_accessor :color
|
49
|
+
# Integer length
|
32
50
|
attr_accessor :length
|
51
|
+
# string season_code
|
33
52
|
attr_accessor :season_code
|
34
53
|
|
35
54
|
###
|
36
|
-
#
|
37
|
-
#
|
38
|
-
#
|
55
|
+
# This method is used for creating an instance of this class by a json_object.
|
56
|
+
#
|
57
|
+
# * *Args* :
|
58
|
+
# - +json_object+ -> the json_object received from the api
|
59
|
+
# - +factory+ -> instance of AboutYou::SDK::Factory::DefaultModelFactory
|
60
|
+
# - +product+ -> Product of this variant
|
61
|
+
#
|
62
|
+
# * *Fails* :
|
63
|
+
# - if json_object has no id
|
39
64
|
#
|
40
|
-
#
|
65
|
+
# * *Returns* :
|
66
|
+
# - Instance of AboutYou::SDK::Model::Variant
|
41
67
|
###
|
42
68
|
def self.create_from_json(json_object, factory, product)
|
43
69
|
fail 'MalformedJsonException' unless json_object['id']
|
@@ -73,6 +99,15 @@ module AboutYou
|
|
73
99
|
variant
|
74
100
|
end
|
75
101
|
|
102
|
+
###
|
103
|
+
# This method is used for parsing images
|
104
|
+
#
|
105
|
+
# * *Args* :
|
106
|
+
# - +image_json+ -> the image json_object received from the api
|
107
|
+
#
|
108
|
+
# * *Returns* :
|
109
|
+
# - [] / Array of instances of AboutYou::SDK::Model::Image
|
110
|
+
###
|
76
111
|
def parse_images(image_json)
|
77
112
|
image_array = []
|
78
113
|
image_json.each do |image|
|
@@ -83,11 +118,13 @@ module AboutYou
|
|
83
118
|
end
|
84
119
|
|
85
120
|
###
|
86
|
-
#
|
121
|
+
# This method searches for an image by a certain hash
|
87
122
|
#
|
88
|
-
#
|
123
|
+
# * *Args* :
|
124
|
+
# - +hash+ -> the hash used for searching
|
89
125
|
#
|
90
|
-
#
|
126
|
+
# * *Returns* :
|
127
|
+
# - nil / instance of AboutYou::SDK::Model::Image
|
91
128
|
###
|
92
129
|
def image_by_hash(hash)
|
93
130
|
images.each do |image|
|
@@ -98,13 +135,13 @@ module AboutYou
|
|
98
135
|
end
|
99
136
|
|
100
137
|
###
|
101
|
-
#
|
138
|
+
# You can select an image with this method by a certain hash
|
102
139
|
#
|
103
|
-
#
|
140
|
+
# * *Args* :
|
141
|
+
# - +hash+ -> the hash used for selecting [optional]
|
104
142
|
#
|
105
|
-
#
|
106
|
-
#
|
107
|
-
# @depracted
|
143
|
+
# * *Returns* :
|
144
|
+
# - Boolean determining whether the selection was successful or not
|
108
145
|
###
|
109
146
|
def select_image(hash = nil)
|
110
147
|
if hash
|
@@ -117,9 +154,10 @@ module AboutYou
|
|
117
154
|
end
|
118
155
|
|
119
156
|
###
|
120
|
-
#
|
157
|
+
# Getter for selected / default image
|
121
158
|
#
|
122
|
-
#
|
159
|
+
# * *Returns* :
|
160
|
+
# - nil / AboutYou::SDK::Model::Image
|
123
161
|
###
|
124
162
|
def image
|
125
163
|
if selected_image
|
@@ -131,6 +169,15 @@ module AboutYou
|
|
131
169
|
nil
|
132
170
|
end
|
133
171
|
|
172
|
+
###
|
173
|
+
# This method parses the facet ids of a certain json_object
|
174
|
+
#
|
175
|
+
# * *Args* :
|
176
|
+
# - +json_object+ -> The json_object received from the api
|
177
|
+
#
|
178
|
+
# * *Returns* :
|
179
|
+
# - {} / Hash containing pairs of group_id => attribute_ids
|
180
|
+
###
|
134
181
|
def parse_facet_ids(json_object)
|
135
182
|
ids = {}
|
136
183
|
|
@@ -142,33 +189,47 @@ module AboutYou
|
|
142
189
|
ids
|
143
190
|
end
|
144
191
|
|
192
|
+
###
|
193
|
+
# This method generated a facet group set for a certain json_object
|
194
|
+
#
|
195
|
+
# * *Args* :
|
196
|
+
# - +json_object+ -> The json_object received from the api
|
197
|
+
###
|
145
198
|
def generate_facet_group_set(json_object)
|
146
199
|
ids = parse_facet_ids(json_object)
|
147
200
|
self.facet_groups = AboutYou::SDK::Model::FacetGroupSet.new(ids)
|
148
201
|
end
|
149
202
|
|
150
203
|
###
|
151
|
-
#
|
204
|
+
# This method searches by a certain facet group id
|
205
|
+
#
|
206
|
+
# * *Args* :
|
207
|
+
# - +group_id+ -> The group_id used for searching
|
152
208
|
#
|
153
|
-
#
|
209
|
+
# * *Returns* :
|
210
|
+
# - nil / instance of AboutYou::SDK::Model::FacetGroup
|
154
211
|
###
|
155
212
|
def facet_group(group_id)
|
156
213
|
facet_groups.group(group_id)
|
157
214
|
end
|
158
215
|
|
159
216
|
###
|
160
|
-
#
|
217
|
+
# Getter for the size facet group
|
218
|
+
#
|
219
|
+
# * *Returns* :
|
220
|
+
# - instance of AboutYou::SDK::Model::FacetGroup
|
161
221
|
###
|
162
222
|
def size
|
163
|
-
###
|
164
223
|
# @todo: Instance level caching
|
165
|
-
###
|
166
224
|
group_id = size_group_id
|
167
225
|
facet_group(group_id) unless group_id.empty?
|
168
226
|
end
|
169
227
|
|
170
228
|
###
|
171
|
-
#
|
229
|
+
# This method is used for getting the size group id
|
230
|
+
#
|
231
|
+
# * *Returns* :
|
232
|
+
# - nil / group_id
|
172
233
|
###
|
173
234
|
def size_group_id
|
174
235
|
keys = {}
|
@@ -192,10 +253,10 @@ module AboutYou
|
|
192
253
|
end
|
193
254
|
|
194
255
|
###
|
195
|
-
#
|
196
|
-
# By default, this returns 1. But some items can have a bigger number.
|
256
|
+
# Getter for the quantity per pack
|
197
257
|
#
|
198
|
-
#
|
258
|
+
# * *Returns* :
|
259
|
+
# - Integer quantity
|
199
260
|
###
|
200
261
|
def quantity_per_pack
|
201
262
|
facet_group = facet_group(
|