Sha256: 31aa68cf7ee2cdfa205eb7911555e8c3296a65b64234afe62f6679abe9f018e7

Contents?: true

Size: 847 Bytes

Versions: 9

Compression:

Stored size: 847 Bytes

Contents

class Rack::App::File::Server

  def initialize(root_folder)
    require 'rack/file'
    @root_folder = root_folder
    @relative_file_paths = Dir.glob(File.join(@root_folder,'**','*')).map{|file_path| file_path.sub(@root_folder,'') }.sort_by{|str| str.length }.reverse
    @rack_file_server = ::Rack::File.new(@root_folder, {})
  end

  def call(env)
    path_info = clean_path_info(env)

    @relative_file_paths.each do |relative_file_path|
      if path_info =~ /#{Regexp.escape(relative_file_path)}$/
        env[::Rack::PATH_INFO]= relative_file_path
      end
    end

    @rack_file_server.call(env)
  end

  def register_path_params_matcher(*args)
  end

  protected

  def clean_path_info(env)
    path_info = ::Rack::Utils.unescape(env[::Rack::PATH_INFO])
    return clean_path_info = ::Rack::Utils.clean_path_info(path_info)
  end

end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rack-app-1.4.0 lib/rack/app/file/server.rb
rack-app-1.3.0 lib/rack/app/file/server.rb
rack-app-1.2.2 lib/rack/app/file/server.rb
rack-app-1.2.1 lib/rack/app/file/server.rb
rack-app-1.1.0 lib/rack/app/file/server.rb
rack-app-1.0.0 lib/rack/app/file/server.rb
rack-app-0.24.0 lib/rack/app/file/server.rb
rack-app-0.23.0 lib/rack/app/file/server.rb
rack-app-0.22.0 lib/rack/app/file/server.rb