class Stubify::IO
Public Class Methods
cached?(request, body)
click to toggle source
# File lib/stubify/io.rb, line 38 def self.cached?(request, body) # Do not load cache if path is whitelisted return false if Stubify.options.whitelisted.include?(request.path) # Otherwise check there is a cached payload path = IO.path_from_request(request) file_name = IO.file_name_from_request(request, body) return Pathname.new(File.join(path, file_name)).file? end
file_name_from_request(request, body)
click to toggle source
# File lib/stubify/io.rb, line 52 def self.file_name_from_request(request, body) file_name = request.request_method.dup file_name << request.query_string.dup unless request.query_string.nil? unless body.nil? file_name << Digest::SHA256.hexdigest(body.to_s) end file_name = "#{Digest::SHA256.hexdigest(file_name)}.json" return file_name end
path_from_request(request)
click to toggle source
# File lib/stubify/io.rb, line 48 def self.path_from_request(request) return File.join(Stubify.options.directory, request.path) end
read_from_disk(request, body)
click to toggle source
# File lib/stubify/io.rb, line 31 def self.read_from_disk(request, body) path = IO.path_from_request(request) file_name = IO.file_name_from_request(request, body) file = File.read(File.join(path, file_name)) return JSON.parse(file) end
write_on_disk(request, body, response)
click to toggle source
# File lib/stubify/io.rb, line 10 def self.write_on_disk(request, body, response) path = IO.path_from_request(request) file_name = IO.file_name_from_request(request, body) data = { 'status_code': response.code, 'content_type': response.content_type, 'body': response.body.to_s } # Do not persist if path is whitelisted return data if Stubify.options.whitelisted.include?(request.path) FileUtils.mkdir_p(path) File.open(File.join(path, file_name), "wb") do |file| file.puts(data.to_json) end return data end