class Esi::Response

Attributes

call[R]
data[R]
original_response[R]

Public Class Methods

new(response, call = nil) click to toggle source
# File lib/esi/response.rb, line 11
def initialize(response, call = nil)
  @original_response = response
  @data = normalize_response_body
  @call = call
end

Public Instance Methods

cached_until() click to toggle source
# File lib/esi/response.rb, line 30
def cached_until
  @cached_until ||= headers[:expires] ? Time.parse(headers[:expires]) : nil
end
log_directory() click to toggle source
# File lib/esi/response.rb, line 39
def log_directory
  call.class.to_s.split('::').last.underscore
  dir = Pathname.new(Esi.config.response_log_path).join(call_name)
  FileUtils.mkdir_p(dir)
  dir
end
merge(other_response) click to toggle source
# File lib/esi/response.rb, line 17
def merge(other_response)
  @data += other_response.data
  self
end
method_missing(method, *args, &block) click to toggle source
# File lib/esi/response.rb, line 52
def method_missing(method, *args, &block)
  data.send(method, *args, &block)
end
save() click to toggle source
# File lib/esi/response.rb, line 34
def save
  File.write(log_directroy.join("#{Time.now.to_i}.json"), to_json) if should_log_response?
  self
end
should_log_response?() click to toggle source
# File lib/esi/response.rb, line 46
def should_log_response?
  return false if call.nil?
  return false if Esi.config.response_log_path.blank? || !Dir.exist?(Esi.config.response_log_path)
  true
end
to_h() click to toggle source
# File lib/esi/response.rb, line 22
def to_h
  data.is_a?(Array) ? data.map { |e| e.try(:to_h) || e } : e.to_h
end
to_json(pretty: true) click to toggle source
# File lib/esi/response.rb, line 26
def to_json(pretty: true)
  MultiJson.dump(data, pretty: pretty)
end

Private Instance Methods

normalize_response_body() click to toggle source
# File lib/esi/response.rb, line 58
def normalize_response_body
  MultiJson.load(body.presence || '{}', symbolize_keys: true, object_class: OpenStruct)
end