class Minimo::Base
Constants
- CONTENT_TYPE
- CREATED_METHOD
- NO_CONTENT_METHOD
Attributes
fixture_path[RW]
headers[RW]
log_path[RW]
Public Class Methods
new()
click to toggle source
# File lib/minimo.rb, line 16 def initialize @headers = default_header @fixture_path = './response'.freeze end
Public Instance Methods
call(env)
click to toggle source
# File lib/minimo.rb, line 27 def call(env) response_body = [] $stdout.sync = true @request = Rack::Request.new(env) verb = @request.request_method file_path = fixture_path(verb) response = Rack::Response.new do |r| r.status = status_code(verb) end CONTENT_TYPE.keys.push(nil).each do |ext| break if file_path.nil? separator = ext.nil? ? '' : '.' file = [file_path, ext].join(separator) if File.exist? file response_body << File.read(file) @headers['Content-Type'] = header_content_type(ext) break end end if response_body.empty? response.status = 404 @headers['Content-Type'] = header_content_type(:text) response_body << "Oops! No route for #{verb} #{@request.path_info}" end @headers.map { |k,v| response.set_header(k,v) } response.write response_body.join("\n") if @log_dir logger = Minimo::Logger.new @log_dir msg = "#{verb} #{@request.path_info} #{env['SERVER_PROTOCOL']} #{response.status}" logger.write msg end response.finish end
set(key, value)
click to toggle source
# File lib/minimo.rb, line 23 def set(key, value) instance_variable_set "@#{key.to_s}", value end
version()
click to toggle source
# File lib/minimo.rb, line 68 def version VERSION end
Private Instance Methods
default_header()
click to toggle source
# File lib/minimo.rb, line 84 def default_header headers = {} headers['Server'] = "minimo #{version}" headers['X-UA-Compatible'] = 'IE=Edge,chrome=1' headers['X-Content-Type-Options'] = 'nosniff' headers end
header_content_type(type = nil)
click to toggle source
# File lib/minimo.rb, line 93 def header_content_type(type = nil) type = :text if type.nil? CONTENT_TYPE[type] end
status_code(verb)
click to toggle source
# File lib/minimo.rb, line 74 def status_code(verb) if NO_CONTENT_METHOD.include? verb 204 elsif CREATED_METHOD.include? verb 201 else 200 end end