Class: ApiModel::Response

Inherits:
Object
  • Object
show all
Defined in:
lib/api_model/response.rb

Constant Summary collapse

FALL_THROUGH_METHODS =
[
  :class, :nil?, :empty?, :acts_like?, :as_json, :blank?, :duplicable?,
  :eval_js, :html_safe?, :in?, :presence, :present?, :psych_to_yaml, :to_json,
  :to_param, :to_query, :to_yaml, :to_yaml_properties, :with_options, :is_a?,
  :respond_to?, :kind_of?
]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(http_response, config) ⇒ Response

Returns a new instance of Response.



12
13
14
15
# File 'lib/api_model/response.rb', line 12

def initialize(http_response, config)
  @http_response = http_response
  @_config = config || Configuration.new
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args, &block) ⇒ Object



57
58
59
# File 'lib/api_model/response.rb', line 57

def method_missing(method_name, *args, &block)
  objects.send method_name, *args, &block
end

Instance Attribute Details

#http_responseObject

Returns the value of attribute http_response.



10
11
12
# File 'lib/api_model/response.rb', line 10

def http_response
  @http_response
end

#objectsObject

Returns the value of attribute objects.



10
11
12
# File 'lib/api_model/response.rb', line 10

def objects
  @objects
end

Instance Method Details

#build(builder, hash) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/api_model/response.rb', line 35

def build(builder, hash)
  if builder.respond_to? :build
    builder.build hash
  else
    builder.new hash
  end
end

#build_objectsObject



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/api_model/response.rb', line 21

def build_objects
  raise UnauthenticatedError if @_config.raise_on_unauthenticated && http_response.api_call.response_code == 401
  raise NotFoundError if @_config.raise_on_not_found && http_response.api_call.response_code == 404
  return if response_body.nil?

  if response_build_hash.is_a? Array
    self.objects = response_build_hash.collect{ |hash| build http_response.builder, hash }
  else
    self.objects = self.build http_response.builder, response_build_hash
  end

  self
end

#metadataObject



17
18
19
# File 'lib/api_model/response.rb', line 17

def 
   ||= OpenStruct.new
end

#response_bodyObject



43
44
45
# File 'lib/api_model/response.rb', line 43

def response_body
  @response_body ||= @_config.parser.parse http_response.api_call.body
end