aboutyou-sdk 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +15 -0
  2. data/lib/aboutyou-sdk.rb +545 -0
  3. data/lib/aboutyou-sdk/Client.rb +125 -0
  4. data/lib/aboutyou-sdk/Constants.rb +48 -0
  5. data/lib/aboutyou-sdk/Criteria/ProductFields.rb +54 -0
  6. data/lib/aboutyou-sdk/Criteria/ProductSearchCriteria.rb +436 -0
  7. data/lib/aboutyou-sdk/Factory/DefaultModelFactory.rb +454 -0
  8. data/lib/aboutyou-sdk/Model/AbstractModel.rb +26 -0
  9. data/lib/aboutyou-sdk/Model/App.rb +35 -0
  10. data/lib/aboutyou-sdk/Model/Autocomplete.rb +92 -0
  11. data/lib/aboutyou-sdk/Model/Basket.rb +262 -0
  12. data/lib/aboutyou-sdk/Model/Basket/AbstractBasketItem.rb +76 -0
  13. data/lib/aboutyou-sdk/Model/Basket/BasketItem.rb +100 -0
  14. data/lib/aboutyou-sdk/Model/Basket/BasketSet.rb +192 -0
  15. data/lib/aboutyou-sdk/Model/Basket/BasketSetItem.rb +46 -0
  16. data/lib/aboutyou-sdk/Model/Basket/BasketVariantItem.rb +137 -0
  17. data/lib/aboutyou-sdk/Model/CategoriesResult.rb +15 -0
  18. data/lib/aboutyou-sdk/Model/Category.rb +126 -0
  19. data/lib/aboutyou-sdk/Model/CategoryManager/DefaultCategoryManager.rb +172 -0
  20. data/lib/aboutyou-sdk/Model/CategoryTree.rb +35 -0
  21. data/lib/aboutyou-sdk/Model/Facet.rb +105 -0
  22. data/lib/aboutyou-sdk/Model/FacetGroup.rb +110 -0
  23. data/lib/aboutyou-sdk/Model/FacetGroupSet.rb +247 -0
  24. data/lib/aboutyou-sdk/Model/FacetManager/DefaultFacetManager.rb +79 -0
  25. data/lib/aboutyou-sdk/Model/Image.rb +134 -0
  26. data/lib/aboutyou-sdk/Model/ImageSize.rb +21 -0
  27. data/lib/aboutyou-sdk/Model/InitiateOrder.rb +50 -0
  28. data/lib/aboutyou-sdk/Model/Order.rb +17 -0
  29. data/lib/aboutyou-sdk/Model/Product.rb +543 -0
  30. data/lib/aboutyou-sdk/Model/ProductSearchResult.rb +125 -0
  31. data/lib/aboutyou-sdk/Model/ProductSearchResult/FacetCount.rb +26 -0
  32. data/lib/aboutyou-sdk/Model/ProductSearchResult/FacetCounts.rb +38 -0
  33. data/lib/aboutyou-sdk/Model/ProductSearchResult/PriceRange.rb +49 -0
  34. data/lib/aboutyou-sdk/Model/ProductSearchResult/SaleCounts.rb +58 -0
  35. data/lib/aboutyou-sdk/Model/ProductSearchResult/TermsCount.rb +27 -0
  36. data/lib/aboutyou-sdk/Model/ProductsEansResult.rb +43 -0
  37. data/lib/aboutyou-sdk/Model/ProductsResult.rb +52 -0
  38. data/lib/aboutyou-sdk/Model/ResultError.rb +24 -0
  39. data/lib/aboutyou-sdk/Model/Variant.rb +255 -0
  40. data/lib/aboutyou-sdk/Model/VariantsResult.rb +102 -0
  41. data/lib/aboutyou-sdk/Query.rb +261 -0
  42. data/lib/aboutyou-sdk/QueryBuilder.rb +440 -0
  43. data/tests/Sinatra-test/Main.rb +5 -0
  44. data/tests/testApiClient.rb +35 -0
  45. data/tests/testAutocomplete.rb +40 -0
  46. data/tests/testCatFilter.rb +35 -0
  47. data/tests/testCatTree.rb +37 -0
  48. data/tests/testFacets.rb +36 -0
  49. data/tests/testProdCatLongestPath.rb +34 -0
  50. data/tests/testProductSearchResult.rb +35 -0
  51. data/tests/testProductsByIds.rb +34 -0
  52. data/tests/testVariantsByIds.rb +34 -0
  53. metadata +122 -0
@@ -0,0 +1,125 @@
1
+ module AboutYou
2
+ module SDK
3
+ module Model
4
+ class ProductSearchResult
5
+
6
+ attr_accessor :products
7
+ attr_accessor :pageHash
8
+ attr_accessor :productCount
9
+ attr_accessor :saleCounts
10
+ attr_accessor :priceRanges
11
+ attr_accessor :facets
12
+ attr_accessor :categories
13
+ attr_accessor :rawFacets
14
+
15
+
16
+ def initialize
17
+
18
+ self.products = Array(nil)
19
+ end
20
+
21
+ ###
22
+ # @param \stdClass $jsonObject
23
+ # @param ModelFactoryInterface $factory
24
+ #
25
+ # @return static
26
+ ###
27
+ def self.createFromJson(jsonObject, factory)
28
+ productSearchResult = self.new
29
+ jsonObj = jsonObject
30
+
31
+ productSearchResult.pageHash = jsonObj["pageHash"];
32
+ productSearchResult.productCount = jsonObj["product_count"];
33
+ productSearchResult.rawFacets = jsonObj["facets"];
34
+
35
+ jsonObj["products"].each do |jsonProduct|
36
+ product = factory.createProduct(jsonProduct)
37
+ productSearchResult.products.push(product)
38
+ end
39
+ productSearchResult.parseFacets(jsonObj["facets"], factory);
40
+ #free memory
41
+ jsonObj["categories"] = nil
42
+ jsonObj["prices"] = nil
43
+ jsonObj["sale"] = nil
44
+ productSearchResult.facets= factory.createFacetsCounts(jsonObject)
45
+
46
+ return productSearchResult;
47
+ end
48
+
49
+
50
+ def parseFacets(jsonObject, factory)
51
+ if (jsonObject["categories"])
52
+ self.categories = factory.createCategoriesFacets(jsonObject["categories"])
53
+ end
54
+ if (jsonObject["prices"])
55
+ self.priceRanges = factory.createPriceRanges(jsonObject["prices"]);
56
+ end
57
+ if (jsonObject["sale"])
58
+ self.saleCounts = factory.createSaleFacet(jsonObject["sale"]);
59
+ end
60
+ end
61
+
62
+
63
+ ###
64
+ # Returns the min price in euro cent or null, if the price range was not requested/selected
65
+ #
66
+ # * @return integer|null
67
+ ###
68
+ def minPrice()
69
+
70
+ if (self.priceRanges.empty?)
71
+ return nil;
72
+ end
73
+
74
+ self.priceRanges.each do |priceRange|
75
+ if (priceRange.productCount === 0)
76
+ next;
77
+ end
78
+
79
+ return priceRange.min;
80
+ end
81
+
82
+ return self.priceRanges[0].min
83
+ end
84
+
85
+ ###
86
+ # Returns the max price in euro cent, if the price range was not requested/selected
87
+ #
88
+ # @return integer|null
89
+ ###
90
+ def maxPrice()
91
+
92
+ if (self.priceRanges.empty?)
93
+ return nil;
94
+ end
95
+
96
+ maxPrice = 0;
97
+ self.priceRanges.reverse_each do |priceRange|
98
+ if (priceRange.productCount == 0)
99
+ next;
100
+ end
101
+
102
+ return priceRange.max();
103
+ end
104
+
105
+ return self.priceRanges[-1].max;
106
+ end
107
+
108
+ ###
109
+ # @return Category[]
110
+ ###
111
+ def categoryTree()
112
+
113
+ topLevelCategories = Array(nil);
114
+ self.categories.each do |category|
115
+ if (category.parent() == nil)
116
+ topLevelCategories.push(category);
117
+ end
118
+ end
119
+
120
+ return topLevelCategories;
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,26 @@
1
+ module AboutYou
2
+ module SDK
3
+ module Model
4
+ class FacetCount
5
+
6
+ # @var Facet */
7
+ @facet;
8
+ attr_accessor :facet
9
+
10
+ # @var integer */
11
+ @count;
12
+ attr_accessor :count
13
+
14
+ ###
15
+ # @param Facet $facet
16
+ # @param integer $count
17
+ ###
18
+ def initialize(facet, count)
19
+
20
+ self.facet = facet;
21
+ self.count = count;
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,38 @@
1
+ module AboutYou
2
+ module SDK
3
+ module Model
4
+ class FacetCounts
5
+
6
+ attr_accessor :groupId
7
+ attr_accessor :facetCountList
8
+ attr_accessor :productCountTotal
9
+ attr_accessor :productCountWithoutAnyFacet
10
+ attr_accessor :productCountWithOtherFacet
11
+
12
+
13
+ def initialize(productCountTotal, productCountWithOtherFacet, productCountWithoutAnyFacet)
14
+
15
+ self.productCountTotal = productCountTotal;
16
+ self.productCountWithOtherFacet = productCountWithOtherFacet;
17
+ self.productCountWithoutAnyFacet = productCountWithoutAnyFacet;
18
+ end
19
+
20
+ ###
21
+ # @param integer $groupId
22
+ # @param \stdClass $jsonObject
23
+ # @param FacetCount[] $facetCounts
24
+ #
25
+ # @return FacetCounts
26
+ ###
27
+ def self.createFromJson(groupId, jsonObject, facetCountList)
28
+
29
+ facetCounts = self.new(jsonObject["total"], jsonObject["other"], jsonObject["missing"])
30
+ facetCounts.groupId = groupId;
31
+ facetCounts.facetCountList = facetCountList;
32
+
33
+ return facetCounts;
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,49 @@
1
+ module AboutYou
2
+ module SDK
3
+ module Model
4
+ class PriceRange
5
+
6
+ attr_accessor :productCount
7
+ attr_accessor :from
8
+ attr_accessor :to
9
+ attr_accessor :min
10
+ attr_accessor :max
11
+ attr_accessor :mean
12
+ attr_accessor :sum
13
+
14
+
15
+ ###
16
+ # Expected json format
17
+ # {
18
+ # "count": 25138,
19
+ # "from": 0,
20
+ # "min": 399,
21
+ # "max": 19999,
22
+ # "to": 20000,
23
+ # "total_count": 25138,
24
+ # "total": 133930606,
25
+ # "mean": 5327.8147028403
26
+ # }
27
+ #
28
+ # @param \stdClass $jsonObject
29
+ #
30
+ # @return static
31
+ ###
32
+ def self.createFromJson(jsonObject)
33
+
34
+ priceRange = self.new
35
+
36
+ priceRange.productCount = jsonObject["count"]
37
+ priceRange.from = jsonObject["from"]
38
+ priceRange.to = jsonObject["to"]
39
+ priceRange.min = jsonObject["min"]
40
+ priceRange.max = jsonObject["max"]
41
+ priceRange.mean = jsonObject["mean"]
42
+ priceRange.sum = jsonObject["total"]
43
+
44
+ return priceRange;
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,58 @@
1
+ module AboutYou
2
+ module SDK
3
+ module Model
4
+ class SaleCounts
5
+
6
+ # @var integer */
7
+ @productCountInSale;
8
+ attr_accessor :productCountInSale
9
+
10
+ # @var integer */
11
+ @productCountNotInSale;
12
+ attr_accessor :productCountNotInSale
13
+
14
+ @productCountTotal
15
+ attr_accessor :productCountTotal
16
+
17
+ @productCountWithoutAnyFacet
18
+ attr_accessor :productCountWithoutAnyFacet
19
+
20
+ @productCountWithOtherFacet
21
+ attr_accessor :productCountWithOtherFacet
22
+
23
+ def initialize(productCountTotal, productCountWithOtherFacet, productCountWithoutAnyFacet)
24
+
25
+ self.productCountTotal = productCountTotal;
26
+ self.productCountWithOtherFacet = productCountWithOtherFacet;
27
+ self.productCountWithoutAnyFacet = productCountWithoutAnyFacet;
28
+ end
29
+
30
+ ###
31
+ # @param \stdClass $jsonObject
32
+ #
33
+ # @return static
34
+ ###
35
+ def self.createFromJson(jsonObject)
36
+ saleCounts = self.new(jsonObject["total"], jsonObject["other"], jsonObject["missing"]);
37
+ saleCounts.parseTerms(jsonObject["terms"]);
38
+
39
+ return self;
40
+ end
41
+
42
+ ###
43
+ # {@inheritdoc}
44
+ ###
45
+ def parseTerms(jsonTerms)
46
+
47
+ jsonTerms.each do |term|
48
+ if (term["term"] == "0")
49
+ self.productCountNotInSale = term["count"];
50
+ else
51
+ self.productCountInSale = term["count"];
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,27 @@
1
+ module AboutYou
2
+ module SDK
3
+ module Model
4
+ class TermsCounts
5
+
6
+ # @var integer */
7
+ @productCountTotal;
8
+ attr_accessor :productCountTotal
9
+
10
+ # @var integer */
11
+ @productCountWithOtherFacet;
12
+ attr_accessor :productCountWithOtherFacet
13
+
14
+ # @var integer */
15
+ @productCountWithoutAnyFacet;
16
+ attr_accessor :productCountWithoutAnyFacet
17
+
18
+ def initialize(productCountTotal, productCountWithOtherFacet, productCountWithoutAnyFacet)
19
+
20
+ self.productCountTotal = productCountTotal;
21
+ self.productCountWithOtherFacet = productCountWithOtherFacet;
22
+ self.productCountWithoutAnyFacet = productCountWithoutAnyFacet;
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,43 @@
1
+ module AboutYou
2
+ module SDK
3
+ module Model
4
+ class ProductsEansResult
5
+
6
+ # @var string[] #
7
+ attr_accessor :eansNotFound
8
+ attr_accessor :pageHash
9
+ attr_accessor :errors
10
+
11
+ ###
12
+ # @param \stdClass $jsonObject
13
+ # @param ModelFactoryInterface $factory
14
+ #
15
+ # @return static
16
+ ###
17
+ def self.createFromJson(jsonObject, factory)
18
+
19
+ productsEansResult = self.new
20
+
21
+ if jsonObject["pageHash"]
22
+ productsEansResult.pageHash = jsonObject["pageHash"]
23
+ else
24
+ productsEansResult.pageHash = nil
25
+ end
26
+
27
+ if (jsonObject["eans"])
28
+ jsonObject["eans"].each do |jsonProduct|
29
+ if (jsonProduct["error_code"])
30
+ productsEansResult.errors.push(jsonProduct)
31
+ productsEansResult.eansNotFound = productsEansResult.eansNotFound + jsonProduct["ean"]
32
+ next;
33
+ end
34
+ productsEansResult.products.push = factory.createProduct(jsonProduct);
35
+ end
36
+ end
37
+
38
+ return productsEansResult;
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,52 @@
1
+ module AboutYou
2
+ module SDK
3
+ module Model
4
+ class ProductsResult
5
+ include AbstractModel
6
+
7
+ attr_accessor :idsNotFound
8
+ attr_accessor :pageHash
9
+ attr_accessor :errors
10
+ attr_accessor :products
11
+
12
+
13
+ ###
14
+ # @param \stdClass $jsonObject
15
+ # @param ModelFactoryInterface $factory
16
+ #
17
+ # @return static
18
+ ###
19
+ def self.createFromJson(jsonObject, factory)
20
+
21
+ productsResult = self.new
22
+
23
+ productsResult.pageHash = (jsonObject["pageHash"]) ? jsonObject["pageHash"] : nil;
24
+ productsResult.errors=Array(nil)
25
+ productsResult.idsNotFound=Array(nil)
26
+ productsResult.products = Hash.new
27
+
28
+ if (jsonObject["ids"])
29
+ jsonObject["ids"].each do |key, jsonProduct|
30
+ if (jsonProduct["error_code"])
31
+ productsResult.idsNotFound.push(key)
32
+ productsResult.errors.push(jsonProduct);
33
+ next
34
+ end
35
+ productsResult.products[Integer(key)] = factory.createProduct(jsonProduct);
36
+ end
37
+ end
38
+
39
+ return productsResult;
40
+ end
41
+
42
+ ###
43
+ # @return integer[] array of product ids
44
+ ###
45
+ def getProductsNotFound()
46
+
47
+ return self.idsNotFound;
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,24 @@
1
+ module AboutYou
2
+ module SDK
3
+ module Model
4
+ module ResultError
5
+
6
+ attr_accessor :errorIdent
7
+ attr_accessor :errorCode
8
+ attr_accessor :errorMessage
9
+
10
+ def initialize(jsonObject)
11
+
12
+ self.parseErrorResult(jsonObject);
13
+ end
14
+
15
+ def parseErrorResult(jsonObject)
16
+
17
+ self.errorIdent = (jsonObject.key?("error_ident")) ? String(jsonObject["error_ident"]) : nil;
18
+ self.errorCode = (jsonObject.key?("error_code")) ? Integer(jsonObject["error_code"]) : 0;
19
+ self.errorMessage = (jsonObject.key?("error_message")) ? jsonObject["error_message"] : nil;
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end