endeca_on_demand 1.2.0 → 1.3.0
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/.gitignore +3 -0
- data/.travis.yml +3 -0
- data/Gemfile +14 -0
- data/Guardfile +5 -0
- data/{README.rdoc → README.md} +97 -71
- data/Rakefile +4 -0
- data/endeca_on_demand.gemspec +6 -5
- data/lib/endeca_on_demand.rb +11 -299
- data/lib/endeca_on_demand/client.rb +16 -14
- data/lib/endeca_on_demand/collection.rb +29 -27
- data/lib/endeca_on_demand/core_ext.rb +1 -0
- data/lib/endeca_on_demand/core_ext/hash.rb +30 -0
- data/lib/endeca_on_demand/pp.rb +39 -37
- data/lib/endeca_on_demand/proxy.rb +49 -57
- data/lib/endeca_on_demand/query.rb +129 -147
- data/lib/endeca_on_demand/response.rb +50 -41
- data/lib/endeca_on_demand/response/applied_filters.rb +33 -25
- data/lib/endeca_on_demand/response/applied_filters/keyword_redirect.rb +28 -27
- data/lib/endeca_on_demand/response/applied_filters/search_report.rb +36 -33
- data/lib/endeca_on_demand/response/applied_filters/search_report/search.rb +30 -27
- data/lib/endeca_on_demand/response/applied_filters/selected_dimension_value_id.rb +26 -20
- data/lib/endeca_on_demand/response/breadcrumb.rb +26 -20
- data/lib/endeca_on_demand/response/breadcrumb/bread.rb +29 -28
- data/lib/endeca_on_demand/response/business_rules_result.rb +25 -19
- data/lib/endeca_on_demand/response/business_rules_result/business_rule.rb +36 -35
- data/lib/endeca_on_demand/response/dimension.rb +34 -33
- data/lib/endeca_on_demand/response/dimension/dimension_value.rb +28 -35
- data/lib/endeca_on_demand/response/property.rb +29 -22
- data/lib/endeca_on_demand/response/records_set.rb +40 -32
- data/lib/endeca_on_demand/response/records_set/record.rb +43 -36
- data/lib/endeca_on_demand/version.rb +1 -1
- data/spec/endeca_on_demand_spec.rb +11 -0
- data/spec/spec_helper.rb +21 -0
- metadata +59 -29
@@ -1,32 +1,38 @@
|
|
1
|
-
|
1
|
+
module EndecaOnDemand
|
2
|
+
class Response
|
3
|
+
class Breadcrumb < EndecaOnDemand::Proxy
|
2
4
|
|
3
|
-
|
5
|
+
include EndecaOnDemand::PP
|
4
6
|
|
5
|
-
|
7
|
+
def inspect_attributes; [ :breads ]; end
|
6
8
|
|
7
|
-
|
9
|
+
## fields ##
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
+
attr_reader :response
|
12
|
+
attr_accessor :breads
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
|
14
|
+
def initialize(response, xml)
|
15
|
+
@response, @xml = response, xml
|
16
|
+
end
|
15
17
|
|
16
|
-
|
18
|
+
## override proxy ##
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
-
|
20
|
+
def class
|
21
|
+
EndecaOnDemand::Response::Breadcrumb
|
22
|
+
end
|
23
|
+
|
24
|
+
##
|
21
25
|
|
22
|
-
|
26
|
+
## associations ##
|
23
27
|
|
24
|
-
|
28
|
+
def breads
|
29
|
+
@breads ||= EndecaOnDemand::Collection.new(EndecaOnDemand::Response::Breadcrumb::Bread, xml.children.css('Bread'), self)
|
30
|
+
end
|
25
31
|
|
26
|
-
|
27
|
-
|
32
|
+
##
|
33
|
+
|
34
|
+
end
|
28
35
|
end
|
36
|
+
end
|
29
37
|
|
30
|
-
|
31
|
-
|
32
|
-
end
|
38
|
+
require 'endeca_on_demand/response/breadcrumb/bread'
|
@@ -1,42 +1,43 @@
|
|
1
|
-
|
1
|
+
module EndecaOnDemand
|
2
|
+
class Response
|
3
|
+
class Breadcrumb
|
4
|
+
class Bread < EndecaOnDemand::Proxy
|
2
5
|
|
3
|
-
|
6
|
+
include EndecaOnDemand::PP
|
4
7
|
|
5
|
-
|
8
|
+
def inspect_attributes; [ :options ]; end
|
6
9
|
|
7
|
-
|
10
|
+
## fields ##
|
8
11
|
|
9
|
-
|
12
|
+
attr_reader :breadcrumb
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
## override proxy ##
|
14
|
+
def initialize(breadcrumb, xml)
|
15
|
+
@breadcrumb, @xml = breadcrumb, xml
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
end
|
17
|
+
define_getters(:options)
|
18
|
+
end
|
20
19
|
|
21
|
-
|
20
|
+
## override proxy ##
|
22
21
|
|
23
|
-
|
22
|
+
def class
|
23
|
+
EndecaOnDemand::Response::Breadcrumb::Bread
|
24
|
+
end
|
24
25
|
|
25
|
-
|
26
|
-
xml.children.inject({}) do |hash,child|
|
27
|
-
hash.tap do
|
28
|
-
hash[child.name] = child.content
|
29
|
-
end
|
30
|
-
end.symbolize_keys
|
31
|
-
end
|
26
|
+
##
|
32
27
|
|
33
|
-
|
28
|
+
## data ##
|
34
29
|
|
35
|
-
|
30
|
+
def options
|
31
|
+
@options ||= xml.children.inject({}) do |hash,child|
|
32
|
+
hash.tap do
|
33
|
+
hash[child.name] = child.content
|
34
|
+
end
|
35
|
+
end.symbolize_keys
|
36
|
+
end
|
36
37
|
|
37
|
-
|
38
|
-
|
39
|
-
|
38
|
+
##
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
40
42
|
end
|
41
|
-
|
42
43
|
end
|
@@ -1,31 +1,37 @@
|
|
1
|
-
|
1
|
+
module EndecaOnDemand
|
2
|
+
class Response
|
3
|
+
class BusinessRulesResult < EndecaOnDemand::Proxy
|
2
4
|
|
3
|
-
|
5
|
+
include EndecaOnDemand::PP
|
4
6
|
|
5
|
-
|
7
|
+
def inspect_attributes; [ :business_rules ]; end
|
6
8
|
|
7
|
-
|
9
|
+
## fields ##
|
8
10
|
|
9
|
-
|
11
|
+
attr_reader :business_rules, :response
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
-
|
13
|
+
def initialize(response, xml)
|
14
|
+
@response, @xml = response, xml
|
15
|
+
end
|
14
16
|
|
15
|
-
|
17
|
+
## override proxy ##
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
-
|
19
|
+
def class
|
20
|
+
EndecaOnDemand::Response::BusinessRulesResult
|
21
|
+
end
|
22
|
+
|
23
|
+
##
|
20
24
|
|
21
|
-
|
25
|
+
## associations ##
|
22
26
|
|
23
|
-
|
27
|
+
def business_rules
|
28
|
+
@business_rules ||= EndecaOnDemand::Collection.new(EndecaOnDemand::Response::BusinessRulesResult::BusinessRule, xml.children.css('BusinessRule'), self)
|
29
|
+
end
|
24
30
|
|
25
|
-
|
26
|
-
|
31
|
+
##
|
32
|
+
|
33
|
+
end
|
27
34
|
end
|
35
|
+
end
|
28
36
|
|
29
|
-
|
30
|
-
|
31
|
-
end
|
37
|
+
require 'endeca_on_demand/response/business_rules_result/business_rule'
|
@@ -1,54 +1,55 @@
|
|
1
|
-
|
1
|
+
module EndecaOnDemand
|
2
|
+
class Response
|
3
|
+
class BusinessRulesResult
|
4
|
+
class BusinessRule < EndecaOnDemand::Proxy
|
2
5
|
|
3
|
-
|
6
|
+
include EndecaOnDemand::PP
|
4
7
|
|
5
|
-
|
8
|
+
def inspect_attributes; [ :options, :properties, :records_set ]; end
|
6
9
|
|
7
|
-
|
10
|
+
## fields ##
|
8
11
|
|
9
|
-
|
12
|
+
attr_reader :options, :properties, :records_set
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
+
def initialize(records_set, xml)
|
15
|
+
@records_set, @xml = records_set, xml
|
14
16
|
|
15
|
-
|
17
|
+
define_getters(:options)
|
18
|
+
end
|
16
19
|
|
17
|
-
|
18
|
-
EndecaOnDemand::Response::BusinessRulesResult::BusinessRule
|
19
|
-
end
|
20
|
+
## override proxy ##
|
20
21
|
|
21
|
-
|
22
|
+
def class
|
23
|
+
EndecaOnDemand::Response::BusinessRulesResult::BusinessRule
|
24
|
+
end
|
22
25
|
|
23
|
-
|
26
|
+
##
|
24
27
|
|
25
|
-
|
26
|
-
@properties ||= EndecaOnDemand::Collection.new(EndecaOnDemand::Response::Property, xml.children.css('properties'), self)
|
27
|
-
end
|
28
|
+
## associations ##
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
|
30
|
+
def properties
|
31
|
+
@properties ||= EndecaOnDemand::Collection.new(EndecaOnDemand::Response::Property, xml.children.css('properties'), self)
|
32
|
+
end
|
32
33
|
|
33
|
-
|
34
|
+
def records_set
|
35
|
+
@records_set ||= EndecaOnDemand::Response::RecordsSet.new(self, xml.children.css('RecordsSet'))
|
36
|
+
end
|
34
37
|
|
35
|
-
|
38
|
+
##
|
36
39
|
|
37
|
-
|
38
|
-
xml.xpath('child::node()[not(local-name() = "properties" or local-name() = "RecordsSet")]').inject({}) do |hash,child|
|
39
|
-
hash.tap do
|
40
|
-
hash[child.name] = child.content
|
41
|
-
end
|
42
|
-
end.symbolize_keys
|
43
|
-
end
|
40
|
+
## data ##
|
44
41
|
|
45
|
-
|
42
|
+
def options
|
43
|
+
@options ||= xml.xpath('child::node()[not(local-name() = "properties" or local-name() = "RecordsSet")]').inject({}) do |hash,child|
|
44
|
+
hash.tap do
|
45
|
+
hash[child.name] = child.content
|
46
|
+
end
|
47
|
+
end.symbolize_keys
|
48
|
+
end
|
46
49
|
|
47
|
-
|
50
|
+
##
|
48
51
|
|
49
|
-
|
50
|
-
|
51
|
-
super(method, *args, &block)
|
52
|
+
end
|
53
|
+
end
|
52
54
|
end
|
53
|
-
|
54
55
|
end
|
@@ -1,50 +1,51 @@
|
|
1
|
-
|
1
|
+
module EndecaOnDemand
|
2
|
+
class Response
|
3
|
+
class Dimension < EndecaOnDemand::Proxy
|
2
4
|
|
3
|
-
|
5
|
+
include EndecaOnDemand::PP
|
4
6
|
|
5
|
-
|
7
|
+
def inspect_attributes; [ :dimension_values, :options ]; end
|
6
8
|
|
7
|
-
|
9
|
+
## fields ##
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
11
|
+
attr_reader :dimension_values, :options, :response
|
12
|
+
|
13
|
+
def initialize(response, xml)
|
14
|
+
@response, @xml = response, xml
|
14
15
|
|
15
|
-
|
16
|
+
define_getters(:options)
|
17
|
+
end
|
16
18
|
|
17
|
-
|
18
|
-
EndecaOnDemand::Response::Dimension
|
19
|
-
end
|
19
|
+
## override proxy ##
|
20
20
|
|
21
|
-
|
21
|
+
def class
|
22
|
+
EndecaOnDemand::Response::Dimension
|
23
|
+
end
|
22
24
|
|
23
|
-
|
25
|
+
##
|
24
26
|
|
25
|
-
|
26
|
-
@dimension_values ||= EndecaOnDemand::Collection.new(EndecaOnDemand::Response::Dimension::DimensionValue, xml.children.css('DimensionValues > DimensionValue'), self)
|
27
|
-
end
|
27
|
+
## associations ##
|
28
28
|
|
29
|
-
|
29
|
+
def dimension_values
|
30
|
+
@dimension_values ||= EndecaOnDemand::Collection.new(EndecaOnDemand::Response::Dimension::DimensionValue, xml.children.css('DimensionValues > DimensionValue'), self)
|
31
|
+
end
|
30
32
|
|
31
|
-
|
33
|
+
##
|
32
34
|
|
33
|
-
|
34
|
-
xml.xpath('child::node()[not(local-name() = "DimensionValues")]').inject({}) do |hash,child|
|
35
|
-
hash.tap do
|
36
|
-
hash[child.name] = child.content
|
37
|
-
end
|
38
|
-
end.symbolize_keys
|
39
|
-
end
|
35
|
+
## data ##
|
40
36
|
|
41
|
-
|
37
|
+
def options
|
38
|
+
@options ||= xml.xpath('child::node()[not(local-name() = "DimensionValues")]').inject({}) do |hash,child|
|
39
|
+
hash.tap do
|
40
|
+
hash[child.name] = child.content
|
41
|
+
end
|
42
|
+
end.symbolize_keys
|
43
|
+
end
|
42
44
|
|
43
|
-
|
45
|
+
##
|
44
46
|
|
45
|
-
|
46
|
-
return options[method] if options.has_key?(method)
|
47
|
-
super(method, *args, &block)
|
47
|
+
end
|
48
48
|
end
|
49
|
+
end
|
49
50
|
|
50
|
-
|
51
|
+
require 'endeca_on_demand/response/dimension/dimension_value'
|
@@ -1,50 +1,43 @@
|
|
1
|
-
|
1
|
+
module EndecaOnDemand
|
2
|
+
class Response
|
3
|
+
class Dimension
|
4
|
+
class DimensionValue < EndecaOnDemand::Proxy
|
2
5
|
|
3
|
-
|
6
|
+
include EndecaOnDemand::PP
|
4
7
|
|
5
|
-
|
8
|
+
def inspect_attributes; [ :options ]; end
|
6
9
|
|
7
|
-
|
10
|
+
## fields ##
|
8
11
|
|
9
|
-
|
12
|
+
attr_reader :dimension, :options
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
+
def initialize(dimension, xml)
|
15
|
+
@dimension, @xml = dimension, xml
|
14
16
|
|
15
|
-
|
17
|
+
define_getters(:options)
|
18
|
+
end
|
16
19
|
|
17
|
-
|
18
|
-
EndecaOnDemand::Response::Dimension::DimensionValue
|
19
|
-
end
|
20
|
+
## override proxy ##
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
|
22
|
+
def class
|
23
|
+
EndecaOnDemand::Response::Dimension::DimensionValue
|
24
|
+
end
|
24
25
|
|
25
|
-
|
26
|
-
Hash[*options.sort_by(&:first).flatten]
|
27
|
-
end
|
26
|
+
##
|
28
27
|
|
29
|
-
|
28
|
+
## data ##
|
30
29
|
|
31
|
-
|
30
|
+
def options
|
31
|
+
@options ||= xml.children.inject({}) do |hash,child|
|
32
|
+
hash.tap do
|
33
|
+
hash[child.name] = child.content
|
34
|
+
end
|
35
|
+
end.symbolize_keys
|
36
|
+
end
|
32
37
|
|
33
|
-
|
34
|
-
xml.children.inject({}) do |hash,child|
|
35
|
-
hash.tap do
|
36
|
-
hash[child.name] = child.content
|
37
|
-
end
|
38
|
-
end.symbolize_keys
|
39
|
-
end
|
38
|
+
##
|
40
39
|
|
41
|
-
|
42
|
-
|
43
|
-
protected
|
44
|
-
|
45
|
-
def method_missing(method, *args, &block)
|
46
|
-
return options[method] if options.has_key?(method)
|
47
|
-
super(method, *args, &block)
|
40
|
+
end
|
41
|
+
end
|
48
42
|
end
|
49
|
-
|
50
43
|
end
|
@@ -1,36 +1,43 @@
|
|
1
|
-
|
1
|
+
module EndecaOnDemand
|
2
|
+
class Response
|
3
|
+
class Property < EndecaOnDemand::Proxy
|
2
4
|
|
3
|
-
|
5
|
+
include EndecaOnDemand::PP
|
4
6
|
|
5
|
-
|
7
|
+
def inspect_attributes; [ :label, :value ]; end
|
6
8
|
|
7
|
-
|
9
|
+
def inspect; "#{label}: #{value.inspect}"; end
|
8
10
|
|
9
|
-
|
11
|
+
## fields ##
|
10
12
|
|
11
|
-
|
12
|
-
@parent, @xml = parent, xml
|
13
|
-
end
|
13
|
+
attr_reader :parent
|
14
14
|
|
15
|
-
|
15
|
+
def initialize(parent, xml)
|
16
|
+
@parent, @xml = parent, xml
|
17
|
+
end
|
16
18
|
|
17
|
-
|
18
|
-
EndecaOnDemand::Response::Property
|
19
|
-
end
|
19
|
+
## override proxy ##
|
20
20
|
|
21
|
-
|
21
|
+
def class
|
22
|
+
EndecaOnDemand::Response::Property
|
23
|
+
end
|
22
24
|
|
23
|
-
|
25
|
+
##
|
24
26
|
|
25
|
-
|
26
|
-
xml.name.to_s.gsub(/^p_/, '')
|
27
|
-
end
|
27
|
+
## data ##
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
def label
|
30
|
+
xml.name.to_s.gsub(/^p_/, '')
|
31
|
+
end
|
32
|
+
|
33
|
+
def value
|
34
|
+
xml.content
|
35
|
+
end
|
36
|
+
alias :to_s :value
|
37
|
+
alias :to_param :value
|
33
38
|
|
34
|
-
|
39
|
+
##
|
35
40
|
|
41
|
+
end
|
42
|
+
end
|
36
43
|
end
|