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