class Drip::Response

Attributes

body[R]
members[R]
meta[R]
status[R]

Public Class Methods

new(status, body) click to toggle source
# File lib/drip/response.rb, line 10
def initialize(status, body)
  @status = status
  @body = body
  @links = parse_links
  @meta = parse_meta
  @members = parse_members

  @body.freeze
end

Public Instance Methods

==(other) click to toggle source
# File lib/drip/response.rb, line 20
def ==(other)
  status == other.status &&
    body == other.body
end
method_missing(method_name, *args, &block) click to toggle source
Calls superclass method
# File lib/drip/response.rb, line 33
def method_missing(method_name, *args, &block)
  return super unless member_map.keys.include?(method_name)
  members[member_map[method_name]]
end
respond_to?(method_name, include_private = false) click to toggle source
Calls superclass method
# File lib/drip/response.rb, line 29
def respond_to?(method_name, include_private = false)
  member_map.keys.include?(method_name) || super
end
success?() click to toggle source
# File lib/drip/response.rb, line 25
def success?
  (200..299).cover?(status)
end

Private Instance Methods

member_map() click to toggle source
# File lib/drip/response.rb, line 68
def member_map
  @member_map ||= {}.tap do |map|
    members.each { |key, _value| map[key.to_sym] = key }
  end
end
parse_members() click to toggle source
# File lib/drip/response.rb, line 48
def parse_members
  return body unless success?
  {}.tap do |members|
    if body.is_a?(Hash)
      body.each do |key, value|
        klass = case value
                when Array
                  Drip::Collections.find_class(key)
                when String
                  String
                else
                  Drip::Resources.find_class(key)
                end

        members[key] = klass.new(value)
      end
    end
  end
end
parse_meta() click to toggle source
# File lib/drip/response.rb, line 44
def parse_meta
  body.is_a?(Hash) ? body.delete("meta") : nil
end