Sha256: 3c6e2d7c9281834ef25f9610ad7c69dece8a9fcc72b4e875dd8df5f83d67cf25

Contents?: true

Size: 1.54 KB

Versions: 11

Compression:

Stored size: 1.54 KB

Contents

#--
# Copyright (c) 2007 - 2013 Jeremy Hinegardner
# All rights reserved. Licensed under the BSD license. See LICENSE for details
#++

require 'rack'
module Heel
  # nothing more than a rack request with some additional methods and overriding
  # where the erros get written
  class Request < ::Rack::Request

    attr_reader :root_dir

    # Initialize the request with the environment and the root directory of the
    # request 
    def initialize(env, root_dir)
      super(env)
      @root_dir = root_dir
    end

    # a stat of the file mentioned in the request path
    #
    def stat
      @stat ||= ::File.stat(request_path) 
    end

    # normalize the request path to the full file path of the request from the
    # +root_dir+
    #
    def request_path
      @request_path ||= ::File.expand_path(::File.join(root_dir, ::Rack::Utils.unescape(path_info)))
    end

    # 
    def base_uri
      @base_uri ||= ::Rack::Utils.unescape(path_info)
    end


    # a request must be for something that below the root directory
    #
    def forbidden?
      request_path.index(root_dir) != 0
    end

    # a request is only good for something that actually exists and is readable
    #
    def found?
      File.exist?(request_path) and (stat.directory? or stat.file?) and stat.readable?
    end

    def for_directory?
      stat.directory?
    end

    def for_file?
      stat.file?
    end

    # was the highlighting parameter true or false?
    #
    def highlighting?
      return !(%w[ off false ].include? self.GET['highlighting'].to_s.downcase)
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
heel-4.0.1 lib/heel/request.rb
heel-4.0.0 lib/heel/request.rb
heel-3.2.1 lib/heel/request.rb
heel-3.2.0 lib/heel/request.rb
heel-3.1.3 lib/heel/request.rb
heel-3.1.2 lib/heel/request.rb
heel-3.1.1 lib/heel/request.rb
heel-3.1.0 lib/heel/request.rb
heel-3.0.2 lib/heel/request.rb
heel-3.0.1 lib/heel/request.rb
heel-3.0.0 lib/heel/request.rb