aboutyou-sdk 0.0.11 → 0.0.13
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 +8 -8
- data/lib/aboutyou-sdk.rb +8 -7
- data/lib/aboutyou-sdk/Factory/DefaultModelFactory.rb +2 -2
- data/lib/aboutyou-sdk/Model/CategoryManager/DefaultCategoryManager.rb +12 -11
- data/lib/aboutyou-sdk/Model/FacetManager/DefaultFacetManager.rb +19 -13
- data/lib/aboutyou-sdk/Query.rb +4 -0
- data/tests/testCategoryCaching.rb +35 -0
- data/tests/testFacetCaching.rb +31 -0
- metadata +18 -3
- data/tests/testDalli.rb +0 -15
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDQzMDNhYThmZmVhMjk4MTQzZDMxZDBhMWE1MWQzZWYxY2EwYjgzYQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MjJiMWEyZTg1ZTFkY2NhMjg4ZjY0NWY5M2Q0OWM1NGM1YjAyZmM0Yg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZmU3ZDljM2UwYmE0ODgzZjNkZTk3MGRmOTFhNWEyYmVmMGVmYzAwMDQ2ZmYz
|
10
|
+
ZjZkZmFlZjE1MTk0MTk3ZmU2NWZhMmEzOGY0ZmY3OTA0NmRmN2U4ZGZhMDY3
|
11
|
+
ZWY3OWM5MjY4ODA1ZDU3YjA3ODg3NTk4NDNiOTk5Y2RiYmI0ZWM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NGI0OWFkYTFiOGM4ZDM0MzhiODMxOGRhMzQ5NjIxMzdiMDdmZjQ4NmFkNDE2
|
14
|
+
MmZhMDU4YmYxZmVkMmE4ODI2ZGQwMzgxZGYxYjJjYmI3MjI3OWUzYjAzN2Nk
|
15
|
+
ZDdiYzQzN2E5ZDk5ZThlYjdjYWExYjMyZTA0ZGI5Y2JlMzFlYTY=
|
data/lib/aboutyou-sdk.rb
CHANGED
@@ -60,6 +60,7 @@ class AY
|
|
60
60
|
appPassword,
|
61
61
|
sessionId = 'SESSION_ID',
|
62
62
|
cache = nil,
|
63
|
+
cacheServer= 'localhost:11211',
|
63
64
|
apiEndPoint = AboutYou::SDK::Constants::API_ENVIRONMENT_LIVE,
|
64
65
|
resultFactory = nil,
|
65
66
|
logger = nil
|
@@ -85,7 +86,7 @@ class AY
|
|
85
86
|
end
|
86
87
|
if cache == 'memcache'
|
87
88
|
require 'dalli'
|
88
|
-
self.cache = Dalli::Client.new(
|
89
|
+
self.cache = Dalli::Client.new(cacheServer, {:value_max_bytes => 5242880})
|
89
90
|
end
|
90
91
|
resultFactory ? self.modelFactoryInstance = resultFactory : initDefaultFactory(self.cache)
|
91
92
|
end
|
@@ -374,10 +375,10 @@ class AY
|
|
374
375
|
# - Instance of AboutYou::SDK::Model::Facet
|
375
376
|
###
|
376
377
|
def fetchFacets(groupIds=[])
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
self.modelFactoryInstance.facetManager.
|
378
|
+
if self.modelFactoryInstance.facetManager.isEmpty
|
379
|
+
query.fetchFacets.executeSingle
|
380
|
+
end
|
381
|
+
self.modelFactoryInstance.facetManager.facetsByGroupIds(groupIds)
|
381
382
|
end
|
382
383
|
|
383
384
|
|
@@ -582,8 +583,8 @@ class AY
|
|
582
583
|
###
|
583
584
|
def initDefaultFactory(cache = nil)
|
584
585
|
resultFactory = AboutYou::SDK::Factory::DefaultModelFactory.new(self,
|
585
|
-
AboutYou::SDK::Model::FacetManager::DefaultFacetManager.new,
|
586
|
-
AboutYou::SDK::Model::CategoryManager::DefaultCategoryManager.new(cache, self.appId)
|
586
|
+
AboutYou::SDK::Model::FacetManager::DefaultFacetManager.new(cache, self.appId, self),
|
587
|
+
AboutYou::SDK::Model::CategoryManager::DefaultCategoryManager.new(cache, self.appId, self)
|
587
588
|
)
|
588
589
|
resultFactory.baseImageUrl=(self.baseImageUrl)
|
589
590
|
|
@@ -187,7 +187,7 @@ module AboutYou
|
|
187
187
|
# * *Returns* :
|
188
188
|
# - a Hash containing pairs of facetKey => AboutYou::SDK::Model::Facet
|
189
189
|
###
|
190
|
-
def createFacetsList(jsonObject, query)
|
190
|
+
def createFacetsList(jsonObject, query=nil)
|
191
191
|
self.createFacetList(jsonObject["facet"], query)
|
192
192
|
end
|
193
193
|
|
@@ -515,7 +515,7 @@ module AboutYou
|
|
515
515
|
# - +query+ -> the query sent to the api
|
516
516
|
###
|
517
517
|
def updateFacetManager(jsonObject, query)
|
518
|
-
self.facetManager.
|
518
|
+
self.facetManager.parseJson(jsonObject, self, query)
|
519
519
|
end
|
520
520
|
|
521
521
|
###
|
@@ -20,6 +20,7 @@ module AboutYou
|
|
20
20
|
attr_accessor :cache
|
21
21
|
# the cache key for the app
|
22
22
|
attr_accessor :cacheKey
|
23
|
+
attr_accessor :shopApi
|
23
24
|
|
24
25
|
###
|
25
26
|
# the Constructor for the AY class
|
@@ -31,7 +32,8 @@ module AboutYou
|
|
31
32
|
# * *Returns* :
|
32
33
|
# - Instance of AboutYou::SDK::Model::CategoryManager::DefaultCategoryManager
|
33
34
|
###
|
34
|
-
def initialize(cache = nil, appId = '')
|
35
|
+
def initialize(cache = nil, appId = '', shopApi)
|
36
|
+
self.shopApi = shopApi
|
35
37
|
self.cache = cache
|
36
38
|
self.cacheKey = 'AY:SDK:' + String(appId) + ':categories'
|
37
39
|
self.loadCachedCategories
|
@@ -42,17 +44,16 @@ module AboutYou
|
|
42
44
|
###
|
43
45
|
def loadCachedCategories
|
44
46
|
if self.cache
|
45
|
-
self.
|
47
|
+
parseJson(self.cache.get(self.cacheKey), self.shopApi.modelFactoryInstance)
|
46
48
|
end
|
47
49
|
end
|
48
50
|
|
49
51
|
###
|
50
52
|
# This method caches the currently read-in categories
|
51
53
|
###
|
52
|
-
def cacheCategories
|
54
|
+
def cacheCategories(jsonObject)
|
53
55
|
if self.cache
|
54
|
-
|
55
|
-
self.cache.set(self.cacheKey, self.categories, DEFAULT_CACHE_DURATION)
|
56
|
+
self.cache.set(self.cacheKey, jsonObject, DEFAULT_CACHE_DURATION)
|
56
57
|
end
|
57
58
|
end
|
58
59
|
|
@@ -78,13 +79,13 @@ module AboutYou
|
|
78
79
|
###
|
79
80
|
def parseJson(jsonObject, factory)
|
80
81
|
self.categories = {}
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
82
|
+
if jsonObject
|
83
|
+
self.cacheFacets(jsonObject)
|
84
|
+
self.parentChildIds = jsonObject["parent_child"]
|
85
|
+
jsonObject["ids"].each do |id, jsonCategory|
|
86
|
+
self.categories[id] = factory.createCategory(jsonCategory)
|
87
|
+
end
|
85
88
|
end
|
86
|
-
self.cacheCategories()
|
87
|
-
self
|
88
89
|
end
|
89
90
|
|
90
91
|
###
|
@@ -15,16 +15,17 @@ module AboutYou
|
|
15
15
|
attr_accessor :cache
|
16
16
|
|
17
17
|
# @var string */
|
18
|
-
@cacheKey;
|
19
18
|
attr_accessor :cacheKey
|
19
|
+
attr_accessor :shopApi
|
20
20
|
|
21
21
|
###
|
22
22
|
# @param Cache $cache
|
23
23
|
# @param string $appId
|
24
24
|
###
|
25
|
-
def initialize(cache = nil, appId = '')
|
25
|
+
def initialize(cache = nil, appId = '', shopApi)
|
26
26
|
|
27
27
|
self.cache = cache;
|
28
|
+
self.shopApi = shopApi
|
28
29
|
self.cacheKey = 'AY:SDK:' + String(appId) + ':facets';
|
29
30
|
self.facets = Hash.new
|
30
31
|
|
@@ -34,14 +35,14 @@ module AboutYou
|
|
34
35
|
def loadCachedFacets()
|
35
36
|
|
36
37
|
if (self.cache)
|
37
|
-
|
38
|
+
parseJson(self.cache.get(self.cacheKey), self.shopApi.modelFactoryInstance)
|
38
39
|
end
|
39
40
|
end
|
40
41
|
|
41
|
-
def cacheFacets()
|
42
|
+
def cacheFacets(jsonObject)
|
42
43
|
|
43
|
-
if (self.cache)
|
44
|
-
self.cache.
|
44
|
+
if (self.cache)
|
45
|
+
self.cache.set(self.cacheKey, jsonObject, DEFAULT_CACHE_DURATION);
|
45
46
|
end
|
46
47
|
end
|
47
48
|
|
@@ -51,16 +52,16 @@ module AboutYou
|
|
51
52
|
self.cache.delete(self.cacheKey);
|
52
53
|
end
|
53
54
|
end
|
54
|
-
|
55
|
-
def isEmpty()
|
56
55
|
|
57
|
-
|
56
|
+
def parseJson(jsonObject, factory, query=nil)
|
57
|
+
if jsonObject
|
58
|
+
self.cacheFacets(jsonObject)
|
59
|
+
self.facets = factory.createFacetsList(jsonObject, query)
|
60
|
+
end
|
58
61
|
end
|
59
62
|
|
60
|
-
def
|
61
|
-
|
62
|
-
@facets = facets;
|
63
|
-
self.cacheFacets();
|
63
|
+
def isEmpty()
|
64
|
+
return (self.facets.empty?);
|
64
65
|
end
|
65
66
|
|
66
67
|
###
|
@@ -71,6 +72,11 @@ module AboutYou
|
|
71
72
|
lookupKey = AboutYou::SDK::Model::Facet.new(0, "", [], 0, "").uniqueKey(groupId, id);
|
72
73
|
return (self.facets[lookupKey]) ? self.facets[lookupKey] : nil;
|
73
74
|
end
|
75
|
+
|
76
|
+
def facetsByGroupIds(groupIds = [])
|
77
|
+
groupIds = groupIds.map { |gId| Integer(gId) }
|
78
|
+
self.facets.select { |key, facet| groupIds.include?(facet.groupId) }
|
79
|
+
end
|
74
80
|
end
|
75
81
|
end
|
76
82
|
end
|
data/lib/aboutyou-sdk/Query.rb
CHANGED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'sinatra'
|
2
|
+
require "pry_debug"
|
3
|
+
require_relative'../lib/aboutyou-sdk.rb'
|
4
|
+
|
5
|
+
get "/doCache" do
|
6
|
+
shop = AY.new(281, 'e6068c4ca020262613d06122663cb300', 'sessionId', 'memcache')
|
7
|
+
shop.fetchProductsByIds(
|
8
|
+
[661132, 660971, 661367, 661361],
|
9
|
+
[AboutYou::SDK::Criteria::ProductFields::CATEGORIES,
|
10
|
+
AboutYou::SDK::Criteria::ProductFields::VARIANTS]
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
get "/getCache" do
|
15
|
+
result = ""
|
16
|
+
shop = AY.new(281, 'e6068c4ca020262613d06122663cb300', 'sessionId', 'memcache')
|
17
|
+
|
18
|
+
shop.fetchCategoryTree.categories.each do |key, cate|
|
19
|
+
result = result + cate.name + ' '
|
20
|
+
end
|
21
|
+
|
22
|
+
return result
|
23
|
+
end
|
24
|
+
|
25
|
+
get "/noCache" do
|
26
|
+
result = ""
|
27
|
+
shop = AY.new(281, 'e6068c4ca020262613d06122663cb300', 'sessionId', 'memcache')
|
28
|
+
shop.cache.delete('AY:SDK:281:categories')
|
29
|
+
|
30
|
+
shop.fetchCategoryTree.categories.each do |key, cate|
|
31
|
+
result = result + cate.name + ' '
|
32
|
+
end
|
33
|
+
|
34
|
+
return result
|
35
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'sinatra'
|
2
|
+
require "pry_debug"
|
3
|
+
require_relative'../lib/aboutyou-sdk.rb'
|
4
|
+
|
5
|
+
get "/doCache" do
|
6
|
+
shop = AY.new(281, 'e6068c4ca020262613d06122663cb300', 'sessionId', 'memcache')
|
7
|
+
shop.fetchFacets(["0"])
|
8
|
+
return "done"
|
9
|
+
end
|
10
|
+
|
11
|
+
get "/getCache" do
|
12
|
+
result = ""
|
13
|
+
shop = AY.new(281, 'e6068c4ca020262613d06122663cb300', 'sessionId', 'memcache')
|
14
|
+
|
15
|
+
shop.fetchFacets(["0"]).each do |key, facet|
|
16
|
+
result = result + key + '</br>'
|
17
|
+
end
|
18
|
+
|
19
|
+
return result
|
20
|
+
end
|
21
|
+
|
22
|
+
get "/noCache" do
|
23
|
+
result = ""
|
24
|
+
shop = AY.new(281, 'e6068c4ca020262613d06122663cb300', 'sessionId', 'memcache')
|
25
|
+
puts shop.cache.delete('AY:SDK:281:facets')
|
26
|
+
shop.fetchFacets(["0"]).each do |key, facet|
|
27
|
+
result = result + key + '</br>'
|
28
|
+
end
|
29
|
+
|
30
|
+
return result
|
31
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aboutyou-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ferenc Beutel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ! '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: dalli
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description: Use the Ruby SDK to build apps for the ABOUT YOU platform.
|
56
70
|
email: ferenc1993beutel@gmx.de
|
57
71
|
executables: []
|
@@ -104,7 +118,8 @@ files:
|
|
104
118
|
- tests/testAutocomplete.rb
|
105
119
|
- tests/testCatFilter.rb
|
106
120
|
- tests/testCatTree.rb
|
107
|
-
- tests/
|
121
|
+
- tests/testCategoryCaching.rb
|
122
|
+
- tests/testFacetCaching.rb
|
108
123
|
- tests/testFacetTypes.rb
|
109
124
|
- tests/testFacets.rb
|
110
125
|
- tests/testFetchFacet.rb
|
data/tests/testDalli.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'sinatra'
|
2
|
-
require "pry_debug"
|
3
|
-
require_relative'../lib/aboutyou-sdk.rb'
|
4
|
-
|
5
|
-
shop = AY.new(281, 'e6068c4ca020262613d06122663cb300', 'sessionId', 'memcache')
|
6
|
-
|
7
|
-
shop.fetchProductsByIds(
|
8
|
-
[661132, 660971, 661367, 661361],
|
9
|
-
[AboutYou::SDK::Criteria::ProductFields::CATEGORIES,
|
10
|
-
AboutYou::SDK::Criteria::ProductFields::VARIANTS]
|
11
|
-
)
|
12
|
-
get "/" do
|
13
|
-
binding.pry
|
14
|
-
return shop.cache.get('AY:SDK:281:categories')
|
15
|
-
end
|