class FileServer

Constants

MIME_TYPES

Public Instance Methods

call(env, asset_dir) click to toggle source
# File lib/railz_lite/controllers/static.rb, line 44
def call(env, asset_dir)
  res = Rack::Response.new
  file_name = requested_file_name(env, asset_dir)

  if File.exist?(file_name)
    serve_file(file_name, res)
  else
    res.status = 404
    res.write('File not found')
  end
  [res.status, res.headers, res.body]
end

Private Instance Methods

requested_file_name(env, asset_dir) click to toggle source
# File lib/railz_lite/controllers/static.rb, line 67
def requested_file_name(env, asset_dir)
  req = Rack::Request.new(env)
  dir = Dir.pwd
  path = req.path
  filename = File.basename(path)
  File.join(dir, asset_dir, filename)
end
serve_file(file_name, res) click to toggle source
# File lib/railz_lite/controllers/static.rb, line 59
def serve_file(file_name, res)
  extension = File.extname(file_name)
  content_type = MIME_TYPES[extension]
  file = File.read(file_name)
  res['Content-type'] = content_type
  res.write(file)
end