aboutyou-sdk 0.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.
- checksums.yaml +15 -0
- data/lib/aboutyou-sdk.rb +545 -0
- data/lib/aboutyou-sdk/Client.rb +125 -0
- data/lib/aboutyou-sdk/Constants.rb +48 -0
- data/lib/aboutyou-sdk/Criteria/ProductFields.rb +54 -0
- data/lib/aboutyou-sdk/Criteria/ProductSearchCriteria.rb +436 -0
- data/lib/aboutyou-sdk/Factory/DefaultModelFactory.rb +454 -0
- data/lib/aboutyou-sdk/Model/AbstractModel.rb +26 -0
- data/lib/aboutyou-sdk/Model/App.rb +35 -0
- data/lib/aboutyou-sdk/Model/Autocomplete.rb +92 -0
- data/lib/aboutyou-sdk/Model/Basket.rb +262 -0
- data/lib/aboutyou-sdk/Model/Basket/AbstractBasketItem.rb +76 -0
- data/lib/aboutyou-sdk/Model/Basket/BasketItem.rb +100 -0
- data/lib/aboutyou-sdk/Model/Basket/BasketSet.rb +192 -0
- data/lib/aboutyou-sdk/Model/Basket/BasketSetItem.rb +46 -0
- data/lib/aboutyou-sdk/Model/Basket/BasketVariantItem.rb +137 -0
- data/lib/aboutyou-sdk/Model/CategoriesResult.rb +15 -0
- data/lib/aboutyou-sdk/Model/Category.rb +126 -0
- data/lib/aboutyou-sdk/Model/CategoryManager/DefaultCategoryManager.rb +172 -0
- data/lib/aboutyou-sdk/Model/CategoryTree.rb +35 -0
- data/lib/aboutyou-sdk/Model/Facet.rb +105 -0
- data/lib/aboutyou-sdk/Model/FacetGroup.rb +110 -0
- data/lib/aboutyou-sdk/Model/FacetGroupSet.rb +247 -0
- data/lib/aboutyou-sdk/Model/FacetManager/DefaultFacetManager.rb +79 -0
- data/lib/aboutyou-sdk/Model/Image.rb +134 -0
- data/lib/aboutyou-sdk/Model/ImageSize.rb +21 -0
- data/lib/aboutyou-sdk/Model/InitiateOrder.rb +50 -0
- data/lib/aboutyou-sdk/Model/Order.rb +17 -0
- data/lib/aboutyou-sdk/Model/Product.rb +543 -0
- data/lib/aboutyou-sdk/Model/ProductSearchResult.rb +125 -0
- data/lib/aboutyou-sdk/Model/ProductSearchResult/FacetCount.rb +26 -0
- data/lib/aboutyou-sdk/Model/ProductSearchResult/FacetCounts.rb +38 -0
- data/lib/aboutyou-sdk/Model/ProductSearchResult/PriceRange.rb +49 -0
- data/lib/aboutyou-sdk/Model/ProductSearchResult/SaleCounts.rb +58 -0
- data/lib/aboutyou-sdk/Model/ProductSearchResult/TermsCount.rb +27 -0
- data/lib/aboutyou-sdk/Model/ProductsEansResult.rb +43 -0
- data/lib/aboutyou-sdk/Model/ProductsResult.rb +52 -0
- data/lib/aboutyou-sdk/Model/ResultError.rb +24 -0
- data/lib/aboutyou-sdk/Model/Variant.rb +255 -0
- data/lib/aboutyou-sdk/Model/VariantsResult.rb +102 -0
- data/lib/aboutyou-sdk/Query.rb +261 -0
- data/lib/aboutyou-sdk/QueryBuilder.rb +440 -0
- data/tests/Sinatra-test/Main.rb +5 -0
- data/tests/testApiClient.rb +35 -0
- data/tests/testAutocomplete.rb +40 -0
- data/tests/testCatFilter.rb +35 -0
- data/tests/testCatTree.rb +37 -0
- data/tests/testFacets.rb +36 -0
- data/tests/testProdCatLongestPath.rb +34 -0
- data/tests/testProductSearchResult.rb +35 -0
- data/tests/testProductsByIds.rb +34 -0
- data/tests/testVariantsByIds.rb +34 -0
- metadata +122 -0
@@ -0,0 +1,15 @@
|
|
1
|
+
module AboutYou
|
2
|
+
module SDK
|
3
|
+
module Model
|
4
|
+
class CategoriesResult
|
5
|
+
attr_accessor :categories
|
6
|
+
attr_accessor :categoriesNotFound
|
7
|
+
|
8
|
+
def initialize(categoryManager, ids)
|
9
|
+
@ids = ids
|
10
|
+
@categories = categoryManager.categories(ids, AboutYou::SDK::Model::Category::ALL)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
module AboutYou
|
2
|
+
module SDK
|
3
|
+
module Model
|
4
|
+
class Category
|
5
|
+
ALL = false;
|
6
|
+
ACTIVE_ONLY = true;
|
7
|
+
|
8
|
+
# @var integer */
|
9
|
+
@id;
|
10
|
+
attr_accessor :id
|
11
|
+
|
12
|
+
# @var string */
|
13
|
+
@name;
|
14
|
+
attr_accessor :name
|
15
|
+
|
16
|
+
# @var boolean */
|
17
|
+
@isActive;
|
18
|
+
attr_accessor :isActive
|
19
|
+
|
20
|
+
# @var integer */
|
21
|
+
@position;
|
22
|
+
attr_accessor :position
|
23
|
+
|
24
|
+
# @var Category */
|
25
|
+
@parentId;
|
26
|
+
attr_accessor :parentId
|
27
|
+
|
28
|
+
# @var Category[] */
|
29
|
+
@allsubcategories;
|
30
|
+
attr_accessor :allsubcategories
|
31
|
+
|
32
|
+
# @var Category[] */
|
33
|
+
@activesubcategories;
|
34
|
+
attr_accessor :activesubcategories
|
35
|
+
|
36
|
+
# @var integer */
|
37
|
+
@productCount;
|
38
|
+
attr_accessor :productCount
|
39
|
+
|
40
|
+
@categoryManager
|
41
|
+
attr_accessor :categoryManager
|
42
|
+
|
43
|
+
def initialize()
|
44
|
+
|
45
|
+
self.allsubcategories = Array(nil);
|
46
|
+
self.activesubcategories = Array(nil);
|
47
|
+
end
|
48
|
+
|
49
|
+
###
|
50
|
+
# @param object $jsonObject json as object tree
|
51
|
+
# @param ModelFactoryInterface $factory
|
52
|
+
# @param Category|null $parent
|
53
|
+
#
|
54
|
+
# @return static
|
55
|
+
###
|
56
|
+
def self.createFromJson(jsonObject, catManager)
|
57
|
+
category = self.new
|
58
|
+
|
59
|
+
category.parentId = jsonObject["parent"];
|
60
|
+
category.id = jsonObject["id"];
|
61
|
+
category.name = jsonObject["name"];
|
62
|
+
category.isActive = jsonObject["active"];
|
63
|
+
category.position = jsonObject["position"];
|
64
|
+
category.categoryManager = catManager
|
65
|
+
|
66
|
+
return category;
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
###
|
71
|
+
# @return boolean
|
72
|
+
###
|
73
|
+
def isPathActive()
|
74
|
+
|
75
|
+
parent = self.parent();
|
76
|
+
|
77
|
+
return self.isActive && (parent == nil || parent.isPathActive());
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
###
|
82
|
+
# @return Category|null
|
83
|
+
###
|
84
|
+
def parent
|
85
|
+
|
86
|
+
if (!self.parentId)
|
87
|
+
return nil;
|
88
|
+
end
|
89
|
+
|
90
|
+
return self.categoryManager.category(self.parentId);
|
91
|
+
end
|
92
|
+
|
93
|
+
###
|
94
|
+
# @param bool $activeOnly
|
95
|
+
#
|
96
|
+
# @return Category[]
|
97
|
+
###
|
98
|
+
def subcategories(activeOnly = ACTIVE_ONLY)
|
99
|
+
subcategories = self.categoryManager.subcategories(self.id, activeOnly);
|
100
|
+
if (activeOnly == ALL)
|
101
|
+
return subcategories;
|
102
|
+
end
|
103
|
+
result = Hash.new
|
104
|
+
|
105
|
+
subcategories.each do |key,subcat|
|
106
|
+
if subcat.isActive
|
107
|
+
result[key] = subcat
|
108
|
+
end
|
109
|
+
end;
|
110
|
+
|
111
|
+
return result
|
112
|
+
end
|
113
|
+
|
114
|
+
###
|
115
|
+
# @return Category[]
|
116
|
+
###
|
117
|
+
def breadcrumb()
|
118
|
+
breadcrumb = self.parent() ? self.parent().breadcrumb() : Array(nil);
|
119
|
+
breadcrumb.push(self)
|
120
|
+
|
121
|
+
return breadcrumb;
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
@@ -0,0 +1,172 @@
|
|
1
|
+
module AboutYou
|
2
|
+
module SDK
|
3
|
+
module Model
|
4
|
+
module CategoryManager
|
5
|
+
class DefaultCategoryManager
|
6
|
+
|
7
|
+
DEFAULT_CACHE_DURATION = 7200;
|
8
|
+
|
9
|
+
# @var Category[] */
|
10
|
+
@categories;
|
11
|
+
attr_accessor :categories
|
12
|
+
|
13
|
+
# @var integer[] */
|
14
|
+
@parentChildIds;
|
15
|
+
attr_accessor :parentChildIds
|
16
|
+
|
17
|
+
# @var Cache */
|
18
|
+
@cache;
|
19
|
+
attr_accessor :cache
|
20
|
+
|
21
|
+
@cacheKey;
|
22
|
+
attr_accessor :cacheKey
|
23
|
+
|
24
|
+
###
|
25
|
+
# @param string $appId This must set, when you use more then one instances with different apps
|
26
|
+
# @param CacheProvider $cache
|
27
|
+
###
|
28
|
+
def initialize(cache = nil, appId = '')
|
29
|
+
|
30
|
+
self.cache = cache;
|
31
|
+
self.cacheKey = 'AY:SDK:' + String(appId) + ':categories';
|
32
|
+
|
33
|
+
self.loadCachedCategories();
|
34
|
+
end
|
35
|
+
|
36
|
+
def loadCachedCategories()
|
37
|
+
|
38
|
+
if (self.cache)
|
39
|
+
self.categories = self.cache.fetch(self.cacheKey) ? self.cache.fetch(self.cacheKey): nil;
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def cacheCategories()
|
44
|
+
|
45
|
+
if (self.cache)
|
46
|
+
self.cache.save(self.cacheKey, self.categories,DEFAULT_CACHE_DURATION);
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def clearCache()
|
51
|
+
|
52
|
+
if (self.cache)
|
53
|
+
self.cache.delete(self.cacheKey);
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
###
|
58
|
+
# @param \stdObject $jsonObject
|
59
|
+
# @param ModelFactoryInterface $factory
|
60
|
+
#
|
61
|
+
# @return $this
|
62
|
+
###
|
63
|
+
def parseJson(jsonObject, factory)
|
64
|
+
self.categories = Hash.new
|
65
|
+
self.parentChildIds = jsonObject["parent_child"]
|
66
|
+
|
67
|
+
jsonObject["ids"].each do |id, jsonCategory|
|
68
|
+
@categories[id] = factory.createCategory(jsonCategory, self);
|
69
|
+
end
|
70
|
+
self.cacheCategories();
|
71
|
+
|
72
|
+
return self
|
73
|
+
end
|
74
|
+
|
75
|
+
###
|
76
|
+
# {@inheritdoc}
|
77
|
+
###
|
78
|
+
def isEmpty()
|
79
|
+
|
80
|
+
return (@categories == nil);
|
81
|
+
end
|
82
|
+
|
83
|
+
###
|
84
|
+
# {@inheritdoc}
|
85
|
+
###
|
86
|
+
def categoryTree(activeOnly = AboutYou::SDK::Model::Category::ACTIVE_ONLY)
|
87
|
+
|
88
|
+
return self.subcategories(0, activeOnly);
|
89
|
+
end
|
90
|
+
|
91
|
+
###
|
92
|
+
# {@inheritdoc}
|
93
|
+
###
|
94
|
+
def category(id)
|
95
|
+
if !(self.categories[String(id)])
|
96
|
+
return nil;
|
97
|
+
end
|
98
|
+
|
99
|
+
return self.categories[String(id)];
|
100
|
+
end
|
101
|
+
|
102
|
+
###
|
103
|
+
# {@inheritdoc}
|
104
|
+
###
|
105
|
+
def categories(ids=nil, activeOnly = AboutYou::SDK::Model::Category::ACTIVE_ONLY)
|
106
|
+
if (ids == nil)
|
107
|
+
return @categories
|
108
|
+
end
|
109
|
+
if !(@categories)
|
110
|
+
return Hash.new;
|
111
|
+
end
|
112
|
+
categories = Hash.new
|
113
|
+
ids.each do |id|
|
114
|
+
if (@categories[id])
|
115
|
+
category = @categories[id];
|
116
|
+
if (activeOnly == AboutYou::SDK::Model::Category::ALL || category.isActive)
|
117
|
+
categories[id] = category;
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
return categories;
|
122
|
+
end
|
123
|
+
|
124
|
+
def allCategories()
|
125
|
+
|
126
|
+
return self.categories;
|
127
|
+
end
|
128
|
+
|
129
|
+
###
|
130
|
+
# {@inheritdoc}
|
131
|
+
###
|
132
|
+
def subcategories(id, activeOnly = AboutYou::SDK::Model::Category::ACTIVE_ONLY)
|
133
|
+
if !(self.parentChildIds.key?(String(id)))
|
134
|
+
return Array(nil);
|
135
|
+
end
|
136
|
+
|
137
|
+
ids = self.parentChildIds[String(id)];
|
138
|
+
return self.categories(ids, activeOnly);
|
139
|
+
end
|
140
|
+
|
141
|
+
###
|
142
|
+
# {@inheritdoc}
|
143
|
+
###
|
144
|
+
def firstCategoryByName(name, activeOnly = AboutYou::SDK::Model::Category::ACTIVE_ONLY)
|
145
|
+
|
146
|
+
self.categories.each do |category|
|
147
|
+
if (category.name == name && (activeOnly == AboutYou::SDK::Model::Category::ACTIVE_ONLY || category.isActive))
|
148
|
+
return category;
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
return nil;
|
153
|
+
end
|
154
|
+
|
155
|
+
###
|
156
|
+
# {@inheritdoc}
|
157
|
+
###
|
158
|
+
def categoriesByName(name, activeOnly = AboutYou::SDK::Model::Category::ACTIVE_ONLY)
|
159
|
+
|
160
|
+
resultCategories = Array(nil)
|
161
|
+
self.categories.each do |category|
|
162
|
+
if(category.name == name && (activeOnly == AboutYou::SDK::Model::Category::ALL || category.isActive))
|
163
|
+
resultCategories.push(category)
|
164
|
+
end
|
165
|
+
end
|
166
|
+
return resultCategories;
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module AboutYou
|
2
|
+
module SDK
|
3
|
+
module Model
|
4
|
+
class CategoryTree
|
5
|
+
# @var CategoryManagerInterface */
|
6
|
+
attr_accessor :categoryManager;
|
7
|
+
|
8
|
+
def initialize(categoryManager)
|
9
|
+
|
10
|
+
self.categoryManager = categoryManager;
|
11
|
+
end
|
12
|
+
|
13
|
+
###
|
14
|
+
# @param bool $activeOnly if true, then only active categories will returned, otherwise all categories
|
15
|
+
#
|
16
|
+
# @return array|Category[]
|
17
|
+
###
|
18
|
+
def categories(activeOnly = AboutYou::SDK::Model::Category::ACTIVE_ONLY)
|
19
|
+
|
20
|
+
return self.categoryManager.categoryTree(activeOnly);
|
21
|
+
end
|
22
|
+
|
23
|
+
###
|
24
|
+
# Count active root all categories
|
25
|
+
#
|
26
|
+
# {@inheritdoc}
|
27
|
+
###
|
28
|
+
def count()
|
29
|
+
|
30
|
+
return self.categories(true).count;
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
module AboutYou
|
2
|
+
module SDK
|
3
|
+
module Model
|
4
|
+
class Facet
|
5
|
+
|
6
|
+
@jsonObject
|
7
|
+
attr_accessor :jsonObject
|
8
|
+
|
9
|
+
# @var integer */
|
10
|
+
@id;
|
11
|
+
attr_accessor :id
|
12
|
+
|
13
|
+
# @var string */
|
14
|
+
@name;
|
15
|
+
attr_accessor :name
|
16
|
+
|
17
|
+
# @var string */
|
18
|
+
@value;
|
19
|
+
attr_accessor :value
|
20
|
+
|
21
|
+
# @var integer */
|
22
|
+
@groupId;
|
23
|
+
attr_accessor :groupId
|
24
|
+
|
25
|
+
# @var string */
|
26
|
+
@groupName;
|
27
|
+
attr_accessor :groupName
|
28
|
+
|
29
|
+
# @var array */
|
30
|
+
@options;
|
31
|
+
attr_accessor :options
|
32
|
+
|
33
|
+
###
|
34
|
+
# @param integer $id
|
35
|
+
# @param string $name
|
36
|
+
# @param string $value
|
37
|
+
# @param integer $groupId
|
38
|
+
# @param string $groupName
|
39
|
+
# @param array $options
|
40
|
+
###
|
41
|
+
def initialize(id, name, value, groupId, groupName, options = nil)
|
42
|
+
|
43
|
+
self.id = id;
|
44
|
+
self.name = name;
|
45
|
+
self.value = value;
|
46
|
+
self.groupId = groupId;
|
47
|
+
self.groupName = groupName;
|
48
|
+
self.options = options;
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
###
|
53
|
+
# @param $jsonObject
|
54
|
+
#
|
55
|
+
# @return static
|
56
|
+
###
|
57
|
+
def self.createFromJson(jsonObject)
|
58
|
+
|
59
|
+
return self.new(
|
60
|
+
jsonObject["facet_id"],
|
61
|
+
jsonObject["name"],
|
62
|
+
(jsonObject["value"]) ? jsonObject["value"] : nil,
|
63
|
+
jsonObject["id"],
|
64
|
+
jsonObject["group_name"],
|
65
|
+
jsonObject["options"] ? jsonObject["options"] : nil
|
66
|
+
)
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
###
|
71
|
+
# a facet is unique with the combination about id and group id
|
72
|
+
#
|
73
|
+
# @return string
|
74
|
+
###
|
75
|
+
def uniqueKey(groupId = nil, facetId = nil)
|
76
|
+
|
77
|
+
return String(self.groupId) + ':' + String(self.id) if(groupId == nil && facetId == nil)
|
78
|
+
return String(groupId) + ':' + String(facetId) if(groupId != nil && facetId != nil)
|
79
|
+
return nil
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
###
|
84
|
+
# Get option value.
|
85
|
+
#
|
86
|
+
# @param string $key The option key.
|
87
|
+
#
|
88
|
+
# @return mixed
|
89
|
+
###
|
90
|
+
def option(key)
|
91
|
+
|
92
|
+
if (self.options)
|
93
|
+
self.options.each do |option|
|
94
|
+
if (option["key"] == key)
|
95
|
+
return option["value"];
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
return nil;
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|