aboutyou-sdk 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,124 +2,99 @@ module AboutYou
2
2
  module SDK
3
3
  class Client
4
4
 
5
- API_END_POINT_STAGE = 'http://shop-api.staging.aboutyou.de/api';
6
- API_END_POINT_SANDBOX = 'http://shop-api.sandbox.aboutyou.de/api';
7
- API_END_POINT_LIVE = 'https://shop-api.aboutyou.de/api';
8
-
9
- ###
10
- # @param string $appId
11
- # @param string $appPassword
12
- # @param string $apiEndPoint
13
- # @param LoggerInterface $logger
14
- ###
15
- def initialize(appId, appPassword, apiEndPoint = 'stage', logger = nil)
16
-
17
- self.setAppCredentials(appId, appPassword);
18
- self.setApiEndpoint(apiEndPoint);
19
- end
20
-
21
- ###
22
- # @param string $appId the app id for client authentication
23
- # @param string $appPassword the app password/token for client authentication.
24
- ###
25
- def setAppCredentials(appId, appPassword)
26
-
27
- @appId = appId;
28
- @appPassword = appPassword;
29
- end
30
-
31
- ###
32
- # @return string
33
- ###
34
- def getApiEndPoint()
35
-
36
- @apiEndPoint;
37
- end
38
-
39
- ###
40
- # @param string $apiEndPoint the endpoint can be the string 'stage' or 'live',
41
- # then the default endpoints will be used or
42
- # an absolute url
43
- ###
44
- def setApiEndpoint(apiEndPoint)
45
-
46
- case
47
- when apiEndPoint=='stage'
48
- @apiEndPoint = API_END_POINT_STAGE;
49
- when apiEndPoint=='sandbox'
50
- @apiEndPoint = API_END_POINT_SANDBOX;
51
- when apiEndPoint=='live'
52
- @apiEndPoint = API_END_POINT_LIVE;
53
- else
54
- @apiEndPoint = apiEndPoint;
55
- end
56
- end
57
-
58
-
59
- ###
60
- # @return string
61
- ###
62
- def getPageId()
63
-
64
- @pageId;
5
+ API_END_POINT_STAGE = 'http://shop-api.staging.aboutyou.de/api'
6
+ API_END_POINT_SANDBOX = 'http://shop-api.sandbox.aboutyou.de/api'
7
+ API_END_POINT_LIVE = 'https://shop-api.aboutyou.de/api'
8
+
9
+ attr_accessor :appId
10
+ attr_accessor :appPassword
11
+ attr_accessor :apiEndPoint
12
+ attr_accessor :pageId
13
+
14
+ def initialize(appId, appPassword, apiEndPoint = 'stage', logger = nil)
15
+
16
+ self.appId = appId
17
+ self.appPassword = appPassword
18
+ end
19
+
20
+
21
+ ###
22
+ # @param appId the app id for client authentication
23
+ # @param appPassword the app password/token for client authentication.
24
+ ###
25
+ def appCredentials=(appId, appPassword)
26
+
27
+ self.appId= appId
28
+ self.appPassword= appPassword
29
+ end
30
+
31
+
32
+ ###
33
+ # @param apiEndPoint the endpoint can be the string 'stage' or 'live',
34
+ # then the default endpoints will be used or
35
+ # an absolute url
36
+ ###
37
+ def apiEndpoint=(apiEndPoint)
38
+
39
+ case
40
+ when apiEndPoint=='stage'
41
+ self.apiEndPoint = API_END_POINT_STAGE
42
+ when apiEndPoint=='sandbox'
43
+ self.apiEndPoint = API_END_POINT_SANDBOX
44
+ when apiEndPoint=='live'
45
+ self.apiEndPoint = API_END_POINT_LIVE
46
+ else
47
+ self.apiEndPoint = apiEndPoint
65
48
  end
66
-
67
- ###
68
- # @param string $pageId
69
- ###
70
- def setPageId(pageId)
71
-
72
- @pageId = pageId;
73
- end
74
-
75
-
76
- ###
77
- # Builds a JSON string representing the request data via Guzzle.
78
- # Executes the API request.
79
- #
80
- # @param string $body the queries as json string
81
- #
82
- # @return \Guzzle\Http\Message\Response response object
83
- #
84
- # @throws ApiErrorException will be thrown if response was invalid
85
- ###
86
- def request(body)
87
-
88
- if (@pageId)
89
- request = {
90
- :body=>body,
91
- :basic_auth => { :username => @appId , :password => @appPassword},
92
- :headers => { 'Content-Type' => 'application/json',
93
- 'Accept-Encoding' => 'gzip,deflate',
94
- 'X-Page-ID'=> @pageId }
49
+ end
50
+
51
+
52
+ ###
53
+ # Builds a JSON string representing the request data via Guzzle.
54
+ # Executes the API request.
55
+ #
56
+ # @param body the queries as json string
57
+ ###
58
+ def request(body)
59
+
60
+ if self.pageId
61
+ request = {
62
+ :body=>body,
63
+ :basic_auth => {
64
+ :username => self.appId,
65
+ :password => self.appPassword
66
+ },
67
+ :headers => {
68
+ 'Content-Type' => 'application/json',
69
+ 'Accept-Encoding' => 'gzip,deflate',
70
+ 'X-Page-ID'=> self.pageId
95
71
  }
96
- else
97
- request = {
72
+ }
73
+ else
74
+ request = {
98
75
  :body=>body,
99
- :basic_auth => { :username => @appId , :password => @appPassword},
100
- :headers => { 'Content-Type' => 'application/json',
101
- 'Accept-Encoding' => 'gzip,deflate' }
76
+ :basic_auth => {
77
+ :username => self.appId,
78
+ :password => self.appPassword
79
+ },
80
+ :headers => {
81
+ 'Content-Type' => 'application/json',
82
+ 'Accept-Encoding' => 'gzip,deflate'
83
+ }
102
84
  }
103
- end
85
+ end
104
86
 
105
- response = HTTParty.post("https://shop-api.aboutyou.de/api",request)
106
- begin
107
- if (!((response.code >= 200 && response.code < 300) || response.code == 304))
108
- raise response.code().to_s
109
- end
110
- begin
111
- if (response.is_a? Array)
112
- raise 'result is not array'
113
- end
114
- rescue
115
- raise
116
- end
117
- rescue
118
- raise
87
+ response = HTTParty.post("https://shop-api.aboutyou.de/api", request)
88
+
89
+ unless response.code >= 200 && response.code < 300 || response.code == 304
90
+ raise String(response.code)
91
+ unless response.is_a? Array
92
+ raise 'result is not array'
119
93
  end
120
-
121
- return JSON.parse(response.body)
122
94
  end
95
+
96
+ JSON.parse(response.body)
97
+ end
123
98
  end
124
99
  end
125
100
  end
@@ -6,43 +6,43 @@
6
6
  module AboutYou
7
7
  module SDK
8
8
  module Constants
9
- SDK_VERSION = 0.1;
10
- FACET_BRAND = 0;
11
- FACET_COLOR = 1;
12
- FACET_SIZE = 2;
13
- FACET_GENDERAGE = 3;
14
- FACET_CUPSIZE = 4;
15
- FACET_LENGTH = 5;
16
- FACET_DIMENSION3 = 6;
17
- FACET_SIZE_CODE = 206;
18
- FACET_SIZE_RUN = 172;
19
- FACET_CLOTHING_UNISEX_INT = 173;
20
- FACET_CLOTHING_UNISEX_INCH = 174;
21
- FACET_SHOES_UNISEX_EUR = 194;
22
- FACET_CLOTHING_WOMEN_DE = 175;
23
- FACET_CLOTHING_UNISEX_ONESIZE = 204;
24
- FACET_SHOES_UNISEX_ADIDAS_EUR = 195;
25
- FACET_CLOTHING_WOMEN_BELTS_CM = 181;
26
- FACET_CLOTHING_WOMEN_INCH = 180;
27
- FACET_CLOTHING_MEN_BELTS_CM = 190;
28
- FACET_CLOTHING_MEN_INCH = 189;
29
- FACET_CLOTHING_MEN_DE = 187;
30
- FACET_CONDITION = 234;
31
- FACET_QUANTITY_PER_PACK = 263;
32
- FACET_SEASON_CODE = 289;
9
+ SDK_VERSION = 0.1
10
+ FACET_BRAND = 0
11
+ FACET_COLOR = 1
12
+ FACET_SIZE = 2
13
+ FACET_GENDERAGE = 3
14
+ FACET_CUPSIZE = 4
15
+ FACET_LENGTH = 5
16
+ FACET_DIMENSION3 = 6
17
+ FACET_SIZE_CODE = 206
18
+ FACET_SIZE_RUN = 172
19
+ FACET_CLOTHING_UNISEX_INT = 173
20
+ FACET_CLOTHING_UNISEX_INCH = 174
21
+ FACET_SHOES_UNISEX_EUR = 194
22
+ FACET_CLOTHING_WOMEN_DE = 175
23
+ FACET_CLOTHING_UNISEX_ONESIZE = 204
24
+ FACET_SHOES_UNISEX_ADIDAS_EUR = 195
25
+ FACET_CLOTHING_WOMEN_BELTS_CM = 181
26
+ FACET_CLOTHING_WOMEN_INCH = 180
27
+ FACET_CLOTHING_MEN_BELTS_CM = 190
28
+ FACET_CLOTHING_MEN_INCH = 189
29
+ FACET_CLOTHING_MEN_DE = 187
30
+ FACET_CONDITION = 234
31
+ FACET_QUANTITY_PER_PACK = 263
32
+ FACET_SEASON_CODE = 289
33
33
 
34
- SORT_RELEVANCE = 'relevance';
35
- SORT_UPDATED = 'updated_date';
36
- SORT_CREATED = 'created_date';
37
- SORT_MOST_VIEWED = 'most_viewed';
38
- SORT_PRICE = 'price';
34
+ SORT_RELEVANCE = 'relevance'
35
+ SORT_UPDATED = 'updated_date'
36
+ SORT_CREATED = 'created_date'
37
+ SORT_MOST_VIEWED = 'most_viewed'
38
+ SORT_PRICE = 'price'
39
39
 
40
- TYPE_PRODUCTS = 'products';
41
- TYPE_CATEGORIES = 'categories';
40
+ TYPE_PRODUCTS = 'products'
41
+ TYPE_CATEGORIES = 'categories'
42
42
 
43
- API_ENVIRONMENT_STAGE = 'stage';
44
- API_ENVIRONMENT_SANDBOX = 'sandbox';
45
- API_ENVIRONMENT_LIVE = 'live';
43
+ API_ENVIRONMENT_STAGE = 'stage'
44
+ API_ENVIRONMENT_SANDBOX = 'sandbox'
45
+ API_ENVIRONMENT_LIVE = 'live'
46
46
  end
47
47
  end
48
48
  end
@@ -243,7 +243,7 @@ module AboutYou
243
243
  self.result['limit'] = limit
244
244
 
245
245
  offset = [offset, 0].max;
246
- self.result['offset']
246
+ self.result['offset'] = offset
247
247
 
248
248
  return self;
249
249
  end
@@ -1,261 +1,262 @@
1
- require_relative 'QueryBuilder.rb'
1
+ require_relative 'QueryBuilder.rb'
2
+
2
3
  module AboutYou
3
4
  module SDK
4
5
  class Query
5
6
  include AboutYou::SDK::QueryBuilder
6
7
 
7
- QUERY_TREE = 'category_tree';
8
- QUERY_FACETS = 'facets';
9
-
10
- attr_accessor :client
11
- attr_accessor :query
12
- attr_accessor :mapping
13
- attr_accessor :factory
14
- attr_accessor :ghostQuery
15
- attr_accessor :allQuery
16
-
8
+ QUERY_TREE = 'category_tree'
9
+ QUERY_FACETS = 'facets'
17
10
 
18
- ###
19
- # @param ShopApiClient $client
20
- # @param ModelFactoryInterface $factory
21
- # @param EventDispatcher $eventDispatcher
22
- ###
23
- def initialize(client, factory)
24
- self.client = client
25
- self.query=Array(nil)
26
- self.ghostQuery = Array(nil)
27
- self.allQuery = Array(nil)
28
- self.factory=factory
29
- self.mapping = Hash[
30
- 'autocompletion' => 'createAutocomplete',
31
- 'basket' => 'createBasket',
32
- 'category' => 'createCategoriesResult',
33
- 'category_tree' => 'createCategoryTree',
34
- 'facets' => 'createFacetsList',
35
- 'facet' => 'createFacetList',
36
- 'facet_types' => 'createFacetTypes',
37
- 'products' => 'createProductsResult',
38
- 'products_eans' => 'createProductsEansResult',
39
- 'product_search' => 'createProductSearchResult',
40
- 'suggest' => 'createSuggest',
41
- 'get_order' => 'createOrder',
42
- 'initiate_order' => 'initiateOrder',
43
- 'child_apps' => 'createChildApps',
44
- 'live_variant' => 'createVariantsResult'
45
- ]
46
- end
47
-
48
- ###
49
- # @param string $searchword The prefix search word to search for.
50
- # @param int $limit Maximum number of results.
51
- # @param array $types Array of types to search for (Constants::TYPE_...).
52
- #
53
- # @return $this
54
- #
55
- # @throws \InvalidArgumentException
56
- ###
57
- def fetchAutocomplete(searchword,limit = nil,types = nil)
58
-
59
- super(searchword, limit, types);
11
+ attr_accessor :client
12
+ attr_accessor :query
13
+ attr_accessor :mapping
14
+ attr_accessor :factory
15
+ attr_accessor :ghostQuery
16
+ attr_accessor :allQuery
60
17
 
61
- self.requireCategoryTree;
62
- self.requireFacets;
63
18
 
64
- return self
65
- end
19
+ def initialize(client, factory)
20
+ self.client = client
21
+ self.query= []
22
+ self.ghostQuery = []
23
+ self.allQuery = []
24
+ self.factory=factory
25
+ self.mapping = {
26
+ 'autocompletion' => 'createAutocomplete',
27
+ 'basket' => 'createBasket',
28
+ 'category' => 'createCategoriesResult',
29
+ 'category_tree' => 'createCategoryTree',
30
+ 'facets' => 'createFacetsList',
31
+ 'facet' => 'createFacetList',
32
+ 'facet_types' => 'createFacetTypes',
33
+ 'products' => 'createProductsResult',
34
+ 'products_eans' => 'createProductsEansResult',
35
+ 'product_search' => 'createProductSearchResult',
36
+ 'suggest' => 'createSuggest',
37
+ 'get_order' => 'createOrder',
38
+ 'initiate_order' => 'initiateOrder',
39
+ 'child_apps' => 'createChildApps',
40
+ 'live_variant' => 'createVariantsResult'
41
+ }
42
+ end
66
43
 
67
- ###
68
- # @param string $sessionId Free to choose ID of the current website visitor.
69
- #
70
- # @return $this
71
- ###
72
- def fetchBasket(sessionId)
73
-
74
- super(sessionId);
44
+ ###
45
+ # @param string $searchword The prefix search word to search for.
46
+ # @param int $limit Maximum number of results.
47
+ # @param array $types Array of types to search for (Constants::TYPE_...).
48
+ #
49
+ # @return $this
50
+ #
51
+ # @throws \InvalidArgumentException
52
+ ###
53
+ def fetchAutocomplete(searchword, limit = nil, types = nil)
75
54
 
76
- self.requireCategoryTree;
77
- self.requireFacets;
55
+ super(searchword, limit, types)
78
56
 
79
- return self
80
- end
57
+ self.requireCategoryTree
58
+ self.requireFacets
81
59
 
82
- ###
83
- # @param string[]|int[] $ids
84
- # @param array $fields
85
- #
86
- # @return $this
87
- ###
88
- def fetchProductsByIds(ids,fields = Array(nil))
89
- super(ids, fields);
90
- if (AboutYou::SDK::Criteria::ProductFields.requiresCategories(fields))
91
- self.requireCategoryTree();
92
- end
93
- if (AboutYou::SDK::Criteria::ProductFields.requiresFacets(fields))
94
- self.requireFacets();
95
- end
60
+ return self
61
+ end
96
62
 
97
- return self;
98
- end
63
+ ###
64
+ # @param string $sessionId Free to choose ID of the current website visitor.
65
+ #
66
+ # @return $this
67
+ ###
68
+ def fetchBasket(sessionId)
99
69
 
100
- ###
101
- # @param string[] $eans
102
- # @param array $fields
103
- #
104
- # @return $this
105
- ###
106
- def fetchProductsByEans(eans,fields = Array(nil))
107
- super(eans, fields);
108
-
109
- if (AboutYou::SDK::Criteria::ProductFields.requiresCategories(fields))
110
- self.requireCategoryTree();
111
- end
112
- if (AboutYou::SDK::Criteria::ProductFields.requiresFacets(fields))
113
- self.requireFacets();
114
- end
70
+ super(sessionId)
115
71
 
116
- return self;
72
+ self.requireCategoryTree
73
+ self.requireFacets
74
+
75
+ return self
76
+ end
77
+
78
+ ###
79
+ # @param string[]|int[] $ids
80
+ # @param array $fields
81
+ #
82
+ # @return $this
83
+ ###
84
+ def fetchProductsByIds(ids,fields = [])
85
+
86
+ super(ids, fields)
87
+
88
+ if AboutYou::SDK::Criteria::ProductFields.requiresCategories(fields)
89
+ self.requireCategoryTree
90
+ end
91
+ if AboutYou::SDK::Criteria::ProductFields.requiresFacets(fields)
92
+ self.requireFacets
117
93
  end
118
94
 
119
- ###
120
- # @param ProductSearchCriteria $criteria
121
- #
122
- # @return $this
123
- ###
124
- def fetchProductSearch(criteria)
95
+ return self
96
+ end
125
97
 
126
- super(criteria);
127
- if (criteria.requiresCategories())
128
- self.requireCategoryTree();
129
- end
130
- if (criteria.requiresFacets())
131
- self.requireFacets();
132
- end
98
+ ###
99
+ # @param string[] $eans
100
+ # @param array $fields
101
+ #
102
+ # @return $this
103
+ ###
104
+ def fetchProductsByEans(eans,fields = [])
105
+
106
+ super(eans, fields)
133
107
 
134
- return self
108
+ if AboutYou::SDK::Criteria::ProductFields.requiresCategories(fields)
109
+ self.requireCategoryTree
110
+ end
111
+ if AboutYou::SDK::Criteria::ProductFields.requiresFacets(fields)
112
+ self.requireFacets
135
113
  end
136
114
 
137
- def requireCategoryTree(fetchForced = false)
138
- if !(fetchForced || self.factory.categoryManager().isEmpty())
139
- return self
140
- end
115
+ return self
116
+ end
141
117
 
142
- self.ghostQuery.push(Hash[QUERY_TREE => Hash[
143
- 'category_tree' => Hash['version' => '2']]])
118
+ ###
119
+ # @param ProductSearchCriteria $criteria
120
+ #
121
+ # @return $this
122
+ ###
123
+ def fetchProductSearch(criteria)
144
124
 
145
- return self
125
+ super(criteria)
126
+
127
+ if criteria.requiresCategories
128
+ self.requireCategoryTree
129
+ end
130
+ if criteria.requiresFacets
131
+ self.requireFacets
146
132
  end
147
133
 
148
- def requireFacets(fetchForced = false)
149
- if !(fetchForced || self.factory.facetManager.isEmpty)
150
- return self;
151
- end
152
- self.ghostQuery.push(Hash[QUERY_FACETS => Hash[
153
- 'facets' => Hash.new]])
134
+ return self
135
+ end
154
136
 
155
- return self;
156
- end
137
+ def requireCategoryTree(fetchForced = false)
157
138
 
158
- ###
159
- # @return string
160
- ###
161
- def queryString()
162
- result = Array(nil)
163
- self.ghostQuery.each do |ghostQuery|
164
- (ghostQuery.is_a? Hash) ? result.push(ghostQuery[ghostQuery.keys[0]]) : nil
165
- end
166
- self.allQuery = result + self.query
167
- return (result + self.query).to_json
139
+ unless fetchForced || self.factory.categoryManager.isEmpty
140
+ return self
168
141
  end
169
142
 
143
+ self.ghostQuery.push({QUERY_TREE => {
144
+ 'category_tree' => {
145
+ 'version' => '2'
146
+ }}})
170
147
 
171
- ###
172
- # request the queries and returns an array of the results
173
- #
174
- # @return array
175
- ###
176
- def execute()
177
-
178
- if (self.query.empty? && self.ghostQuery.empty?)
179
- return Array(nil);
180
- end
181
- queryString = queryString()
182
- result = self.client.request(queryString);
183
- parseResult(result, self.query.count > 1)
148
+ return self
149
+ end
150
+
151
+ def requireFacets(fetchForced = false)
152
+ unless fetchForced || self.factory.facetManager.isEmpty
153
+ return self
184
154
  end
155
+ self.ghostQuery.push({QUERY_FACETS => {
156
+ 'facets' => {}
157
+ }})
185
158
 
186
- ###
187
- # request the current query and returns the first result
188
- #
189
- # @return mixed
190
- ###
191
- def executeSingle()
159
+ return self
160
+ end
192
161
 
193
- result = execute();
194
- result[-1]
162
+ ###
163
+ # @return string
164
+ ###
165
+ def queryString
166
+ result = []
167
+ self.ghostQuery.each do |ghostQuery|
168
+ (ghostQuery.is_a? Hash) ? result.push(ghostQuery[ghostQuery.keys[0]]) : nil
195
169
  end
196
-
197
- def checkResponse(jsonResponse)
198
-
199
- if (jsonResponse == false || !(jsonResponse.is_a? Array) || jsonResponse.count != self.allQuery.count)
200
-
201
- raise 'UnexpectedResultException!'
202
- end
170
+ self.allQuery = result + self.query
171
+ return (result + self.query).to_json
172
+ end
203
173
 
204
-
205
- jsonResponse.each_with_index do |responseObject, index|
206
- currentQuery = self.allQuery[index];
207
- responseKey = jsonResponse[index].keys[0];
208
- queryKey = currentQuery.keys[0];
209
- if (responseKey != queryKey)
210
- raise 'UnexpectedResultException!
211
- result ' + String(queryKey) + ' expected, but ' + String(responseKey) + ' given on position ' + String(index) +
212
- ' - query: ' + currentQuery.to_json
213
- end
214
-
215
- if !(self.mapping.has_key?(responseKey))
216
- raise 'UnexpectedResultException! internal error, ' + String(responseKey) + ' is unknown result'
217
- end
218
- end
174
+
175
+ ###
176
+ # request the queries and returns an array of the results
177
+ #
178
+ # @return array
179
+ ###
180
+ def execute
181
+
182
+ if self.query.empty? && self.ghostQuery.empty?
183
+ return []
184
+ end
185
+ parseResult(self.client.request(queryString), self.query.count > 1)
186
+ end
187
+
188
+ ###
189
+ # request the current query and returns the first result
190
+ #
191
+ # @return mixed
192
+ ###
193
+ def executeSingle
194
+
195
+ execute[-1]
196
+ end
197
+
198
+ def checkResponse(jsonResponse)
199
+
200
+ if jsonResponse == false || !(jsonResponse.is_a? Array) || jsonResponse.count != self.allQuery.count
201
+ raise 'UnexpectedResultException!'
202
+ end
203
+
204
+ (0..jsonResponse.count-1).each do |index|
205
+ currentQuery = self.allQuery[index]
206
+ responseKey = jsonResponse[index].keys[0]
207
+ queryKey = currentQuery.keys[0]
208
+
209
+ if responseKey != queryKey
210
+ raise 'UnexpectedResultException! result ' + String(queryKey) + ' expected,
211
+ but ' + String(responseKey) + ' given on position ' + String(index) +
212
+ ' - query: ' + currentQuery.to_json
213
+ end
214
+
215
+ unless self.mapping.key? responseKey
216
+ raise 'UnexpectedResultException! internal error, ' + String(responseKey) + ' is unknown result'
217
+ end
219
218
  end
219
+ end
220
+
221
+ def parseResult(jsonResponse, isMultiRequest=true)
222
+
223
+ self.checkResponse(jsonResponse)
224
+ results = []
225
+ queryIds = []
220
226
 
221
- def parseResult(jsonResponse, isMultiRequest=true)
222
-
223
- self.checkResponse(jsonResponse)
224
- results = Array(nil)
225
- queryIds = Array(nil)
226
- self.allQuery.each do |query|
227
- queryIds.push(query.keys[0])
227
+ self.allQuery.each do |query|
228
+ queryIds.push(query.keys[0])
229
+ end
230
+
231
+ jsonResponse.each_with_index do |responseObject, index|
232
+ currentQuery = self.allQuery[index]
233
+ resultKey = responseObject.keys[0]
234
+ jsonObject = responseObject[resultKey]
235
+ queryKey = currentQuery.keys[0]
236
+ factory = self.factory
237
+
238
+ if (jsonObject.is_a? Hash) && jsonObject['error_code']
239
+ result = factory.preHandleError(jsonObject, resultKey, isMultiRequest)
240
+ if result != false
241
+ results.push({resultKey=> result})
242
+ next
228
243
  end
244
+ end
229
245
 
230
- jsonResponse.each_with_index do |responseObject, index|
231
- currentQuery = self.allQuery[index]
232
- resultKey = responseObject.keys[0]
233
- jsonObject = responseObject[resultKey]
234
- queryKey = currentQuery.keys[0]
235
- factory = self.factory
236
- if !(queryKey == "facet_types" || queryKey == "suggest" || queryKey == "facet")
237
- if (jsonObject['error_code'])
238
- result = factory.preHandleError(jsonObject, resultKey, isMultiRequest);
239
- if (result != false)
240
- results.push(Hash[resultKey=> result])
241
- next
242
- end
243
- end
244
- end
245
- query = currentQuery[queryKey];
246
- queryId = queryIds[index];
247
- if (queryId == QUERY_FACETS)
248
- factory.updateFacetManager(jsonObject, query);
249
- elsif (queryId == QUERY_TREE)
250
- factory.initializeCategoryManager(jsonObject);
251
- else
252
- method = self.mapping[resultKey];
253
- result = factory.send(method, jsonObject, query)
254
- results.push(result)
255
- end
256
- end
246
+ query = currentQuery[queryKey]
247
+ queryId = queryIds[index]
248
+ if queryId == QUERY_FACETS
249
+ factory.updateFacetManager(jsonObject, query)
250
+ elsif queryId == QUERY_TREE
251
+ factory.initializeCategoryManager(jsonObject)
252
+ else
253
+ method = self.mapping[resultKey]
254
+ result = factory.send(method, jsonObject, query)
255
+ results.push(result)
256
+ end
257
+ end
257
258
 
258
- return results;
259
+ return results
259
260
  end
260
261
  end
261
262
  end