22: def _call(env)
23: if env["PATH_INFO"].include? ".."
24: return [403, {"Content-Type" => "text/plain"}, ["Forbidden\n"]]
25: end
26:
27: @path = env["PATH_INFO"] == '/' ? @root : F.join(@root, env['PATH_INFO'])
28: ext = F.extname(@path)[1..-1]
29:
30: if F.file?(@path) && F.readable?(@path)
31: [200, {
32: "Content-Type" => MIME_TYPES[ext] || "text/plain",
33: "Content-Length" => F.size(@path).to_s
34: }, self]
35: else
36: return [404, {"Content-Type" => "text/plain"},
37: ["File not found: #{env["PATH_INFO"]}\n"]]
38: end
39: end