endeca_on_demand 0.9.9.2 → 0.9.9.5
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.
- data/lib/endeca_on_demand/business_rules_result.rb +4 -3
- data/lib/endeca_on_demand/keyword_redirect.rb +12 -0
- data/lib/endeca_on_demand/record_set/record.rb +14 -0
- data/lib/endeca_on_demand/record_set.rb +24 -0
- data/lib/endeca_on_demand/search_report/search.rb +14 -0
- data/lib/endeca_on_demand/search_report.rb +21 -0
- data/lib/endeca_on_demand/selected_dimension_value_id.rb +5 -5
- data/lib/endeca_on_demand/version.rb +1 -1
- data/lib/endeca_on_demand.rb +34 -29
- metadata +10 -7
- data/lib/endeca_on_demand/record.rb +0 -12
- data/lib/endeca_on_demand/search.rb +0 -12
@@ -1,9 +1,10 @@
|
|
1
1
|
class EndecaOnDemand
|
2
2
|
class BusinessRulesResult < Proxy
|
3
|
-
|
4
|
-
attr_reader :properties
|
5
3
|
|
6
4
|
require 'endeca_on_demand/business_rules_result/property'
|
5
|
+
require 'endeca_on_demand/record_set/record'
|
6
|
+
|
7
|
+
attr_reader :properties
|
7
8
|
|
8
9
|
def initialize(business_rules_result)
|
9
10
|
@properties = []
|
@@ -19,7 +20,7 @@ class EndecaOnDemand
|
|
19
20
|
|
20
21
|
if node.name == "RecordSet"
|
21
22
|
node.xpath("./RecordSet//Record").each do |node|
|
22
|
-
@records.push(EndecaOnDemand::Record.new(node))
|
23
|
+
@records.push(EndecaOnDemand::RecordSet::Record.new(node))
|
23
24
|
end
|
24
25
|
end
|
25
26
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class EndecaOnDemand
|
2
|
+
class KeywordRedirect < Proxy
|
3
|
+
|
4
|
+
def initialize(keyword_redirect)
|
5
|
+
keyword_redirect.children.each do |node|
|
6
|
+
self.instance_variable_set(:"@#{node.name.downcase}", node.content)
|
7
|
+
self.class_eval("attr_reader :#{node.name.downcase}")
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class EndecaOnDemand
|
2
|
+
class RecordSet
|
3
|
+
class Record < Proxy
|
4
|
+
|
5
|
+
def initialize(record)
|
6
|
+
record.children.each do |node|
|
7
|
+
self.instance_variable_set(:"@#{node.name.downcase}", node.content)
|
8
|
+
self.class_eval("attr_reader :#{node.name.downcase}")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class EndecaOnDemand
|
2
|
+
class Record < Proxy
|
3
|
+
|
4
|
+
require 'endeca_on_demand/record_set/record'
|
5
|
+
|
6
|
+
attr_reader :records
|
7
|
+
|
8
|
+
def initialize(record_set)
|
9
|
+
@records = []
|
10
|
+
|
11
|
+
record_set.children.each do |node|
|
12
|
+
if node.name == "Record"
|
13
|
+
node.xpath("./Record").each do |node|
|
14
|
+
@records.push(EndecaOnDemand::RecordSet::Record.new(node))
|
15
|
+
end
|
16
|
+
else
|
17
|
+
self.instance_variable_set(:"@#{node.name.downcase}", node.content)
|
18
|
+
self.class_eval("attr_reader :#{node.name.downcase}")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class EndecaOnDemand
|
2
|
+
class SearchReport
|
3
|
+
class Search < Proxy
|
4
|
+
|
5
|
+
def initialize(search)
|
6
|
+
search.children.each do |node|
|
7
|
+
self.instance_variable_set(:"@#{node.name.downcase}", node.content)
|
8
|
+
self.class_eval("attr_reader :#{node.name.downcase}")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class EndecaOnDemand
|
2
|
+
class SearchReport < Proxy
|
3
|
+
|
4
|
+
require 'endeca_on_demand/search_report/search'
|
5
|
+
|
6
|
+
attr_reader :search
|
7
|
+
|
8
|
+
def initialize(search_report)
|
9
|
+
search_report.children.each do |node|
|
10
|
+
self.instance_variable_set(:"@#{node.name.downcase}", node.content)
|
11
|
+
|
12
|
+
node.xpath("//Search").each do |node|
|
13
|
+
@search = EndecaOnDemand::SearchReport::Search.new(node)
|
14
|
+
end if node.name == "Search"
|
15
|
+
|
16
|
+
self.class_eval("attr_reader :#{node.name.downcase}")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
class EndecaOnDemand
|
2
2
|
class SelectedDimensionValueId < Proxy
|
3
3
|
|
4
|
-
def initialize(
|
5
|
-
|
6
|
-
self.instance_variable_set(:"@#{
|
7
|
-
self.class_eval("attr_reader :#{
|
4
|
+
def initialize(selected_dimension_value_id)
|
5
|
+
selected_dimension_value_id.each do |node|
|
6
|
+
self.instance_variable_set(:"@#{node.name.downcase}", node.content)
|
7
|
+
self.class_eval("attr_reader :#{node.name.downcase}")
|
8
8
|
end
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
end
|
12
12
|
end
|
data/lib/endeca_on_demand.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'endeca_on_demand/proxy'
|
2
2
|
|
3
|
-
Dir["#{File.dirname(__FILE__)}/endeca_on_demand
|
3
|
+
Dir["#{File.dirname(__FILE__)}/endeca_on_demand/**/*"].each {|file| require(file)}
|
4
4
|
|
5
5
|
require 'builder'
|
6
6
|
require 'nokogiri'
|
@@ -18,7 +18,7 @@ class EndecaOnDemand
|
|
18
18
|
|
19
19
|
#
|
20
20
|
options.each do |key, value|
|
21
|
-
self.send(key.to_sym, value) unless value.
|
21
|
+
self.send(key.to_sym, value) unless value.blank?
|
22
22
|
end
|
23
23
|
|
24
24
|
#
|
@@ -34,11 +34,11 @@ class EndecaOnDemand
|
|
34
34
|
end
|
35
35
|
|
36
36
|
### API
|
37
|
-
attr_reader :records
|
37
|
+
attr_reader :records
|
38
38
|
attr_reader :breadcrumbs, :filtercrumbs
|
39
39
|
attr_reader :dimensions
|
40
40
|
attr_reader :rules
|
41
|
-
attr_reader :
|
41
|
+
attr_reader :search_reports, :keyword_redirect
|
42
42
|
attr_reader :selected_dimension_value_ids
|
43
43
|
|
44
44
|
## DEBUG
|
@@ -87,7 +87,9 @@ class EndecaOnDemand
|
|
87
87
|
build_breadcrumbs
|
88
88
|
build_dimensions
|
89
89
|
build_business_rules
|
90
|
-
|
90
|
+
build_search_reports
|
91
|
+
build_selected_dimension_value_ids
|
92
|
+
build_keyword_redirect
|
91
93
|
end
|
92
94
|
|
93
95
|
### XML REQUEST ###
|
@@ -201,7 +203,7 @@ class EndecaOnDemand
|
|
201
203
|
@records_per_page = @response.xpath("//RecordsSet//recordsperpage")
|
202
204
|
@total_record_count = @response.xpath("//RecordsSet//totalrecordcount")
|
203
205
|
|
204
|
-
unless @response.xpath("//RecordsSet").
|
206
|
+
unless @response.xpath("//RecordsSet").blank?
|
205
207
|
@response.xpath("//RecordsSet//Record").each do |record|
|
206
208
|
@records.push(EndecaOnDemand::Record.new(record))
|
207
209
|
end
|
@@ -215,7 +217,7 @@ class EndecaOnDemand
|
|
215
217
|
@filtercrumbs = []
|
216
218
|
@breadcrumbs = []
|
217
219
|
|
218
|
-
unless @response.xpath("//Breadcrumbs").
|
220
|
+
unless @response.xpath("//Breadcrumbs").blank?
|
219
221
|
@response.xpath("//Breadcrumbs//Breads").each do |node|
|
220
222
|
filtercrumbs = []
|
221
223
|
node.xpath("./Bread").each do |node|
|
@@ -234,7 +236,7 @@ class EndecaOnDemand
|
|
234
236
|
def build_dimensions
|
235
237
|
@dimensions = []
|
236
238
|
|
237
|
-
unless @response.xpath("//Dimensions").
|
239
|
+
unless @response.xpath("//Dimensions").blank?
|
238
240
|
@response.xpath("//Dimensions//Dimension").each do |node|
|
239
241
|
@dimensions.push(EndecaOnDemand::Dimension.new(node))
|
240
242
|
end
|
@@ -247,7 +249,7 @@ class EndecaOnDemand
|
|
247
249
|
def build_business_rules
|
248
250
|
@business_rules_results = []
|
249
251
|
|
250
|
-
unless @response.xpath("//BusinessRulesResult").
|
252
|
+
unless @response.xpath("//BusinessRulesResult").blank?
|
251
253
|
@response.xpath("//BusinessRulesResult//BusinessRules//BusinessRule").each do |node|
|
252
254
|
@business_rules_results.push(EndecaOnDemand::BusinessRulesResult.new(node))
|
253
255
|
end
|
@@ -255,38 +257,41 @@ class EndecaOnDemand
|
|
255
257
|
puts 'There are no business rules with this response!'
|
256
258
|
end
|
257
259
|
end
|
258
|
-
|
259
|
-
# Builds the SEARCH REPORTS and SELECTED DIMENSION VALUE IDS if included in response
|
260
|
-
def build_applied_filters
|
261
|
-
unless @response.xpath("//AppliedFilters").nil?
|
262
260
|
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
@matchedrecordcount = @response.xpath("//AppliedFilters//SearchReports//SearchReport//matchedrecordcount")
|
268
|
-
@matchedmode = @response.xpath("//AppliedFilters//SearchReports//SearchReport//matchedmode")
|
269
|
-
@matchedtermscount = @response.xpath("//AppliedFilters//SearchReports//SearchReport//matchedtermscount")
|
270
|
-
@applied_search_adjustments = @response.xpath("//AppliedFilters//SearchReports//SearchReport//AppliedSearchAdjustments")
|
271
|
-
@suggested_search_adjustments = @response.xpath("//AppliedFilters//SearchReports//SearchReport//SuggestedSearchAdjustments")
|
261
|
+
# Builds an array of SEARCH REPORTS includes SEARCH
|
262
|
+
def build_search_reports
|
263
|
+
@search_reports = []
|
272
264
|
|
273
|
-
|
265
|
+
unless @response.xpath("//AppliedFilters").blank?
|
266
|
+
unless @response.xpath("//AppliedFilters//SearchReports").blank?
|
267
|
+
@search_reports.push(EndecaOnDemand::SearchReport.new(@response.xpath("//AppliedFilters//SearchReports//SearchReport")))
|
274
268
|
else
|
275
|
-
puts
|
269
|
+
puts "There are no search reports with this response!"
|
276
270
|
end
|
271
|
+
end
|
272
|
+
end
|
277
273
|
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
274
|
+
# Builds an array of SELECTED DIMENSION VALUE IDS
|
275
|
+
def build_selected_dimension_value_ids
|
276
|
+
@selected_dimension_value_ids = []
|
277
|
+
|
278
|
+
unless @response.xpath("//AppliedFilters").blank?
|
279
|
+
unless @response.xpath("//AppliedFilters//SelectedDimensionValueIds").blank?
|
282
280
|
@response.xpath("//AppliedFilters//SelectedDimnesionValueIds").each do |node|
|
283
281
|
@selected_dimension_value_ids.push(EndecaOnDemand::SelectedDimensionValueId.new(node))
|
284
282
|
end
|
285
283
|
else
|
286
284
|
puts "There are no selected dimension value ids with this response!"
|
287
285
|
end
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
# Builds a KEYWORD REDIRECT for a given search term
|
290
|
+
def build_keyword_redirect
|
291
|
+
unless @response.xpath("//KeywordRedirects").blank?
|
292
|
+
@keyword_redirect = EndecaOnDemand::KeywordRedirect.new(@response.xpath("//KeywordRedirects"))
|
288
293
|
else
|
289
|
-
puts
|
294
|
+
puts "There is no keyword redirectd with this r!"
|
290
295
|
end
|
291
296
|
end
|
292
297
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: endeca_on_demand
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.9.
|
4
|
+
version: 0.9.9.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-09-08 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70328031715700 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70328031715700
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: nokogiri
|
27
|
-
requirement: &
|
27
|
+
requirement: &70328031713880 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70328031713880
|
36
36
|
description: EndecaOnDemand will take a query-string and construct an XML query and
|
37
37
|
send it to an hosted Endeca On-Demand Cluster. It will then parse the response and
|
38
38
|
expose an API for using the response data.
|
@@ -54,9 +54,12 @@ files:
|
|
54
54
|
- lib/endeca_on_demand/bread_crumb.rb
|
55
55
|
- lib/endeca_on_demand/business_rules_result.rb
|
56
56
|
- lib/endeca_on_demand/dimension.rb
|
57
|
+
- lib/endeca_on_demand/keyword_redirect.rb
|
57
58
|
- lib/endeca_on_demand/proxy.rb
|
58
|
-
- lib/endeca_on_demand/
|
59
|
-
- lib/endeca_on_demand/
|
59
|
+
- lib/endeca_on_demand/record_set.rb
|
60
|
+
- lib/endeca_on_demand/record_set/record.rb
|
61
|
+
- lib/endeca_on_demand/search_report.rb
|
62
|
+
- lib/endeca_on_demand/search_report/search.rb
|
60
63
|
- lib/endeca_on_demand/selected_dimension_value_id.rb
|
61
64
|
- lib/endeca_on_demand/version.rb
|
62
65
|
homepage: http://github.com/sdomino/endeca_on-demand
|
@@ -1,12 +0,0 @@
|
|
1
|
-
class EndecaOnDemand
|
2
|
-
class Record < Proxy
|
3
|
-
|
4
|
-
def initialize(record)
|
5
|
-
record.children.each do |node|
|
6
|
-
self.instance_variable_set(:"@#{node.name.downcase}", node.content)
|
7
|
-
self.class_eval("attr_reader :#{node.name.downcase}")
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
end
|
12
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
class EndecaOnDemand
|
2
|
-
class Search < Proxy
|
3
|
-
|
4
|
-
def initialize(report)
|
5
|
-
report.children.each do |node|
|
6
|
-
self.instance_variable_set(:"@#{node.name.downcase}", node.content)
|
7
|
-
self.class_eval("attr_reader :#{node.name.downcase}")
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
end
|
12
|
-
end
|