class Reverb::Response

Attributes

data[RW]

Success is only exposed to facilitate factory generation. It should not be used in code. Please use success? instead.

status[RW]

Success is only exposed to facilitate factory generation. It should not be used in code. Please use success? instead.

success[RW]

Success is only exposed to facilitate factory generation. It should not be used in code. Please use success? instead.

Public Class Methods

new(response = nil) click to toggle source
# File lib/reverb/response.rb, line 7
def initialize(response = nil)
  @status    = nil
  @success   = false
  @body      = nil
  @response  = response
  @scrubbers = {}

  process_response if @response
end

Public Instance Methods

scrub(regex, value) click to toggle source
# File lib/reverb/response.rb, line 38
def scrub(regex, value)
  return self unless regex
  @scrubbers[regex] = value
  self
end
scrubbed() click to toggle source
# File lib/reverb/response.rb, line 21
def scrubbed
  return @scrubbed if defined?(@scrubbed)

  scrub etag, 'ETAG' if Configuration.current.scrub_etag && etag

  scrubbers = @scrubbers
  @scrubbers = {}

  @scrubbed = PP.pp(self, '')

  scrub_all scrubbers

  @scrubbers = scrubbers

  @scrubbed
end
success?() click to toggle source
# File lib/reverb/response.rb, line 17
def success?
  @success
end

Private Instance Methods

body() click to toggle source
# File lib/reverb/response.rb, line 105
def body
  @body
end
etag() click to toggle source
# File lib/reverb/response.rb, line 83
def etag
  raw_etag &&
    @response.env.response_headers['etag'].gsub(/"/, '')
end
on_success() click to toggle source
# File lib/reverb/response.rb, line 109
def on_success
end
process_response() click to toggle source
# File lib/reverb/response.rb, line 46
def process_response
  @status = @response.status
  @success = @response.success?

  if success?
    @body = JSON.parse(@response.body)
    on_success
  end
end
raw_etag() click to toggle source
# File lib/reverb/response.rb, line 88
def raw_etag
  response_headers &&
    @response.env.response_headers.is_a?(Hash) &&
    @response.env.response_headers['etag'] || nil
end
regexes(regex) click to toggle source
# File lib/reverb/response.rb, line 71
def regexes(regex)
  return [regex] unless regex.is_a?(String)

  escaped = CGI.escape(regex)

  list = Set.new([regex])
  list << escaped
  list << escaped.gsub('+', '%20').gsub('%2F', '/')

  list
end
response_env() click to toggle source
# File lib/reverb/response.rb, line 100
def response_env
  @response.respond_to?(:env) &&
    @response.env || nil
end
response_headers() click to toggle source
# File lib/reverb/response.rb, line 94
def response_headers
  response_env &&
    @response.env.respond_to?(:response_headers) &&
    @response.env.response_headers || nil
end
scrub_all(scrubbers) click to toggle source
# File lib/reverb/response.rb, line 56
def scrub_all(scrubbers)
  return unless Configuration.current.scrub
  scrubbers.each do |regex, value|
    wipe regex, value
  end
end
wipe(regex, value) click to toggle source
# File lib/reverb/response.rb, line 63
def wipe(regex, value)
  value ||= 'NIL_SCRUB'

  regexes(regex).each do |match|
    @scrubbed = @scrubbed.gsub(match, value)
  end
end