endeca_on_demand 0.9.7 → 0.9.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  class EndecaOnDemand
2
- class BusinessRule
2
+ class BusinessRule < Proxy
3
3
 
4
4
  attr_reader :properties_array
5
5
 
@@ -13,11 +13,5 @@ class EndecaOnDemand
13
13
  end
14
14
  end
15
15
 
16
- def method_missing(method, *args, &block)
17
- unless self.instance_variables.include?(:"@#{method}")
18
- "N/A"
19
- end
20
- end
21
-
22
16
  end
23
17
  end
@@ -1,5 +1,5 @@
1
1
  class EndecaOnDemand
2
- class BusinessRuleProperty
2
+ class BusinessRuleProperty < Proxy
3
3
 
4
4
  def initialize(property)
5
5
  property.each do |key, value|
@@ -8,11 +8,5 @@ class EndecaOnDemand
8
8
  end
9
9
  end
10
10
 
11
- def method_missing(method, *args, &block)
12
- unless self.instance_variables.include?(:"@#{method}")
13
- "N/A"
14
- end
15
- end
16
-
17
11
  end
18
12
  end
@@ -1,5 +1,5 @@
1
1
  class EndecaOnDemand
2
- class Crumb
2
+ class Crumb < Proxy
3
3
 
4
4
  def initialize(crumb)
5
5
  crumb.each do |key, value|
@@ -8,11 +8,5 @@ class EndecaOnDemand
8
8
  end
9
9
  end
10
10
 
11
- def method_missing(method, *args, &block)
12
- unless self.instance_variables.include?(:"@#{method}")
13
- "N/A"
14
- end
15
- end
16
-
17
11
  end
18
12
  end
@@ -1,5 +1,5 @@
1
1
  class EndecaOnDemand
2
- class Dimension
2
+ class Dimension < Proxy
3
3
 
4
4
  attr_reader :dimension_values
5
5
 
@@ -12,11 +12,5 @@ class EndecaOnDemand
12
12
  end
13
13
  end
14
14
 
15
- def method_missing(method, *args, &block)
16
- unless self.instance_variables.include?(:"@#{method}")
17
- "N/A"
18
- end
19
- end
20
-
21
15
  end
22
16
  end
@@ -1,5 +1,5 @@
1
1
  class EndecaOnDemand
2
- class DimensionValue
2
+ class DimensionValue < Proxy
3
3
 
4
4
  def initialize(dimension_value)
5
5
  dimension_value.each do |key, value|
@@ -8,11 +8,5 @@ class EndecaOnDemand
8
8
  end
9
9
  end
10
10
 
11
- def method_missing(method, *args, &block)
12
- unless self.instance_variables.include?(:"@#{method}")
13
- "N/A"
14
- end
15
- end
16
-
17
11
  end
18
12
  end
@@ -1,5 +1,5 @@
1
1
  class EndecaOnDemand
2
- class DimensionValueId
2
+ class DimensionValueId < Proxy
3
3
 
4
4
  def initialize(id)
5
5
  id.each do |key, value|
@@ -8,11 +8,5 @@ class EndecaOnDemand
8
8
  end
9
9
  end
10
10
 
11
- def method_missing(method, *args, &block)
12
- unless self.instance_variables.include?(:"@#{method}")
13
- "N/A"
14
- end
15
- end
16
-
17
11
  end
18
12
  end
@@ -0,0 +1,11 @@
1
+ class EndecaOnDemand
2
+ class Proxy
3
+
4
+ def method_missing(method, *args, &block)
5
+ unless self.instance_variables.include?(:"@#{method}")
6
+ "#{method} is unavailable."
7
+ end
8
+ end
9
+
10
+ end
11
+ end
@@ -1,5 +1,5 @@
1
1
  class EndecaOnDemand
2
- class Record
2
+ class Record < Proxy
3
3
 
4
4
  def initialize(record)
5
5
  record.each do |key, value|
@@ -8,11 +8,5 @@ class EndecaOnDemand
8
8
  end
9
9
  end
10
10
 
11
- def method_missing(method, *args, &block)
12
- unless self.instance_variables.include?(:"@#{method}")
13
- "N/A"
14
- end
15
- end
16
-
17
11
  end
18
12
  end
@@ -1,5 +1,5 @@
1
1
  class EndecaOnDemand
2
- class Search
2
+ class Search < Proxy
3
3
 
4
4
  def initialize(report)
5
5
  report.each do |key, value|
@@ -8,11 +8,5 @@ class EndecaOnDemand
8
8
  end
9
9
  end
10
10
 
11
- def method_missing(method, *args, &block)
12
- unless self.instance_variables.include?(:"@#{method}")
13
- "N/A"
14
- end
15
- end
16
-
17
11
  end
18
12
  end
@@ -1,3 +1,3 @@
1
1
  class EndecaOnDemand
2
- VERSION = "0.9.7"
2
+ VERSION = "0.9.8"
3
3
  end
@@ -1,3 +1,5 @@
1
+ require 'endeca_on_demand/proxy'
2
+
1
3
  Dir["#{File.dirname(__FILE__)}/endeca_on_demand/*"].each { |file| require(file)}
2
4
 
3
5
  require 'builder'
@@ -28,28 +30,66 @@ class EndecaOnDemand
28
30
  end
29
31
 
30
32
  ### API
33
+ attr_reader :records, :record_offset, :records_per_page, :total_record_count
34
+ attr_reader :breadcrumbs, :filtercrumbs
35
+ attr_reader :dimensions
36
+ attr_reader :rules
37
+ attr_reader :searchs, :matchedrecordcount, :matchedmode, :applied_search_adjustments, :suggested_search_adjustments
38
+ attr_reader :selected_dimension_value_ids
39
+
40
+ ## DEBUG
41
+ attr_reader :uri, :http
42
+ attr_reader :base, :query, :request, :raw_response, :response, :error
43
+ ## /DEBUG
44
+ ### /API
31
45
 
32
- attr_reader :records, :record_offset, :records_per_page, :total_record_count
33
- attr_reader :breadcrumbs, :filtercrumbs
34
- attr_reader :dimensions
35
- attr_reader :rules
36
- attr_reader :searchs, :matchedrecordcount, :matchedmode, :applied_search_adjustments, :suggested_search_adjustments
37
- attr_reader :selected_dimension_value_ids
38
-
39
- ## DEBUG
40
- attr_reader :uri, :http
41
- attr_reader :base, :query, :request, :raw_response, :response, :error
42
- ## /DEBUG
46
+ def success?
47
+ @error.blank?
48
+ end
43
49
 
44
- ### /API
50
+ private
45
51
 
46
52
  def method_missing(method, *args, &block)
47
53
  unless self.instance_variables.include?(:"@#{method}")
48
- puts "Unable to retrieve this value because: #{@error.message}"
54
+ puts "#{method} is unavailable."
55
+ else
56
+ puts "Unable to retrieve #{method} because: #{@error.message}."
49
57
  end
50
58
  end
51
59
 
52
- private
60
+ ## SEND REQUEST
61
+
62
+ # Completes the endeca XML reqeust by inserting the XML body into the requred 'Query' tags, and sends the request to your hosted Endeca On-Demand Web API
63
+ def send_request
64
+ @query = Builder::XmlMarkup.new(:indent => 2)
65
+ @query.Query do
66
+ @query << @body.target!
67
+ end
68
+
69
+ begin
70
+ @request, @raw_response = @http.post(@uri.path, @query.target!, 'Content-type' => 'application/xml')
71
+ handle_response(Crackoid::XML.parse(@raw_response))
72
+ rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, Errno::ECONNREFUSED, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => error
73
+ @error = error
74
+ end
75
+ end
76
+
77
+ ## HANDLE RESPONSE
78
+
79
+ def handle_response(response)
80
+ @response = response['Final']
81
+
82
+ build_data
83
+ end
84
+
85
+ def build_data
86
+ build_records
87
+ build_breadcrumbs
88
+ build_filtercrumbs
89
+ build_dimensions
90
+ build_business_rules
91
+ build_applied_filters
92
+ end
53
93
 
54
94
  ### XML REQUEST ###
55
95
 
@@ -150,39 +190,9 @@ class EndecaOnDemand
150
190
  # puts @body.target!
151
191
  end
152
192
 
153
- ## SEND REQUEST
154
-
155
- # Completes the endeca XML reqeust by inserting the XML body into the requred 'Query' tags, and sends the request to your hosted Endeca On-Demand Web API
156
- def send_request
157
- @query = Builder::XmlMarkup.new(:indent => 2)
158
- @query.Query do
159
- @query << @body.target!
160
- end
161
-
162
- begin
163
- @request, @raw_response = @http.post(@uri.path, @query.target!, 'Content-type' => 'application/xml')
164
- handle_response(Crackoid::XML.parse(@raw_response))
165
- rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, Errno::ECONNREFUSED, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => error
166
- @error = error
167
- end
168
- end
169
-
170
- ## HANDLE RESPONSE
171
-
172
- def handle_response(response)
173
- @response = response['Final']
174
-
175
- build_data
176
- end
193
+ ### RESPONSE XML ###
177
194
 
178
- def build_data
179
- build_records
180
- build_breadcrumbs
181
- build_filtercrumbs
182
- build_dimensions
183
- build_business_rules
184
- build_applied_filters
185
- end
195
+ ## BUILD RESPONSE
186
196
 
187
197
  # Builds an array of RECORDS
188
198
  def build_records
@@ -260,21 +270,21 @@ class EndecaOnDemand
260
270
  breads = @response['Breadcrumbs']['Breads']
261
271
  if breads.instance_of?(Hash)
262
272
  breads.each do |key, value|
263
- @filtercrumbs.push(EndecaOnDemand::Crumb.new(value))
273
+ @filtercrumbs.push(value)
264
274
  end
265
275
  elsif breads.instance_of?(Array)
266
276
  breads.each do |bread|
267
277
  if bread.instance_of?(Hash)
268
- @filtercrumbs.push(bread['Bread'])
278
+ @filtercrumbs.push(bread)
269
279
  elsif bread.instance_of?(Array)
270
280
  bread['Bread'].each do |crumb|
271
- @filtercrumbs.push(EndecaOnDemand::Crumb.new(crumb))
281
+ @filtercrumbs.push(crumb)
272
282
  end
273
283
  end
274
284
  end
275
285
  end
276
286
  else
277
- puts 'There are no breadcrumbs (filtercrumbs) with this response!'
287
+ puts 'There are no filtercrumbs (breadcrumbs) with this response!'
278
288
  end
279
289
  end
280
290
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: endeca_on_demand
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.9.7
5
+ version: 0.9.8
6
6
  platform: ruby
7
7
  authors:
8
8
  - sdomino
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-08-18 00:00:00 Z
13
+ date: 2011-08-22 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: crackoid
@@ -57,6 +57,7 @@ files:
57
57
  - lib/endeca_on_demand/dimension.rb
58
58
  - lib/endeca_on_demand/dimension_value.rb
59
59
  - lib/endeca_on_demand/dimension_value_id.rb
60
+ - lib/endeca_on_demand/proxy.rb
60
61
  - lib/endeca_on_demand/record.rb
61
62
  - lib/endeca_on_demand/search.rb
62
63
  - lib/endeca_on_demand/version.rb