Skip to content

Instantly share code, notes, and snippets.

@cmorss
Created August 16, 2016 23:04
Show Gist options
  • Save cmorss/8d2ee1a8ca718fde4335430c2c384cd3 to your computer and use it in GitHub Desktop.
Save cmorss/8d2ee1a8ca718fde4335430c2c384cd3 to your computer and use it in GitHub Desktop.
Response.rb. Updated to include error subclass.
class Response
attr_accessor :data
delegate :[], :map, :select, :each, :first, :inject, to: :data
def initialize(data = nil)
self.data = data
end
def value
data
end
def result
data
end
def success?
true
end
def error?
false
end
def transform(transformed = nil)
self.data = block_given? ? yield(data) : transformed
self
end
end
class ResponseError < Response
attr_reader :message, :error, :status
def initialize(error, options = {})
if error.is_a?(Exception)
self.error = error
elsif error.is_a?(String)
self.error = RuntimeError.new(error)
else
raise RuntimeError, "Unknown error specified #{error.inspect}"
end
self.message = options[:message] || self.error.message
self.status = options[:status]
end
def success?
false
end
def error?
true
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment