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