class EngagingNetworks::Response::Wrapper
Attributes
kind[R]
obj[R]
response[R]
Public Class Methods
new(response)
click to toggle source
# File lib/engaging_networks/response/wrapper.rb, line 13 def initialize(response) @response = response if ao_xml_response? data = response.body['AOXmlResponse']['rows']['row'] elsif ea_data_response? data = response.body['EaData'] else return end # check for multiple returned rows if collection_response? data @kind = :collection @obj = EngagingNetworks::Response::Collection.new(rows_for(data)) elsif object_response? data @kind = :object @obj = EngagingNetworks::Response::Object.new(data['EaRow'] ? data['EaRow'] : data) else @kind = :empty @obj = nil end end
Public Instance Methods
[](key)
click to toggle source
Lookup an attribute from the object if hash, otherwise behave like array index. Convert any key to string before calling.
# File lib/engaging_networks/response/wrapper.rb, line 104 def [](key) if self.obj.is_a?(Array) self.obj[key] else self.obj.send(:"#{key}") end end
ao_xml_response?()
click to toggle source
# File lib/engaging_networks/response/wrapper.rb, line 37 def ao_xml_response? @response.body.respond_to?('has_key?') && @response.body.has_key?('AOXmlResponse') end
body()
click to toggle source
Response
raw body
# File lib/engaging_networks/response/wrapper.rb, line 76 def body @body ? @body : response.body end
body=(value)
click to toggle source
# File lib/engaging_networks/response/wrapper.rb, line 70 def body=(value) @body = value @env[:body] = value end
client_error?()
click to toggle source
# File lib/engaging_networks/response/wrapper.rb, line 93 def client_error? status.to_i >= 400 && status.to_i < 500 end
collection?()
click to toggle source
# File lib/engaging_networks/response/wrapper.rb, line 57 def collection? kind == :collection end
collection_response?(data)
click to toggle source
# File lib/engaging_networks/response/wrapper.rb, line 45 def collection_response? data data.is_a?(Array) || (data.respond_to?('has_key?') && data.has_key?('EaRow') && data['EaRow'].is_a?(Array)) end
ea_data_response?()
click to toggle source
# File lib/engaging_networks/response/wrapper.rb, line 41 def ea_data_response? @response.body.respond_to?('has_key?') && @response.body.has_key?('EaData') end
each(&block)
click to toggle source
Iterate over each resource inside the collection
# File lib/engaging_networks/response/wrapper.rb, line 141 def each(&block) if collection? obj.each do |o| block.call(o) end else raise("can only iterate over collections") end end
method_missing(method_name, *args, &block)
click to toggle source
if a raw object, just delegate
Calls superclass method
# File lib/engaging_networks/response/wrapper.rb, line 131 def method_missing(method_name, *args, &block) if object? obj.send(method_name, &block) else super end end
object?()
click to toggle source
# File lib/engaging_networks/response/wrapper.rb, line 61 def object? kind == :object end
object_response?(data)
click to toggle source
# File lib/engaging_networks/response/wrapper.rb, line 49 def object_response? data data.respond_to?('has_key?') end
redirect?()
click to toggle source
# File lib/engaging_networks/response/wrapper.rb, line 89 def redirect? status.to_i >= 300 && status.to_i < 400 end
rows_for(data)
click to toggle source
# File lib/engaging_networks/response/wrapper.rb, line 53 def rows_for data data.is_a?(Array) ? data : data['EaRow'] end
server_error?()
click to toggle source
# File lib/engaging_networks/response/wrapper.rb, line 97 def server_error? status.to_i >= 500 && status.to_i < 600 end
status()
click to toggle source
Response
status
# File lib/engaging_networks/response/wrapper.rb, line 81 def status response.status end
success?()
click to toggle source
# File lib/engaging_networks/response/wrapper.rb, line 85 def success? response.success? end
to_ary()
click to toggle source
Convert the ResponseWrapper into an Array
# File lib/engaging_networks/response/wrapper.rb, line 126 def to_ary body.to_ary end
to_hash()
click to toggle source
Convert the ResponseWrapper into a Hash
# File lib/engaging_networks/response/wrapper.rb, line 120 def to_hash body.to_hash end
to_s()
click to toggle source
Return response body as string
# File lib/engaging_networks/response/wrapper.rb, line 114 def to_s body.to_s end
url()
click to toggle source
Request
url
# File lib/engaging_networks/response/wrapper.rb, line 66 def url response.env[:url].to_s end