Class Rascut::Httpd::FileOnly
In: lib/rascut/httpd.rb
Parent: Rack::File

Methods

_call  

Public Instance methods

[Source]

    # File lib/rascut/httpd.rb, line 22
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

[Validate]