class Drip::Response
Attributes
body[R]
links[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_links()
click to toggle source
# File lib/drip/response.rb, line 40 def parse_links body.is_a?(Hash) ? body.delete("links") : nil 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