Sha256: 794d153118018aaaabccd1b9556f2cf6cc844684676d27a38e8fe01b534cc7b5

Contents?: true

Size: 980 Bytes

Versions: 14

Compression:

Stored size: 980 Bytes

Contents

class Kiss
  class StaticFile
    def initialize(path, options = {})
      @_path = path
      @_options = options
    end
    
    def finish
      ext = File.extname(@_path)[1..-1]
      
      headers = {
        "Last-Modified"  => File.mtime(@_path).rfc822,
        "Content-Type"   => @_options[:type] || Kiss.mime_type(ext) || "text/plain",
        "Content-Length" => File.size(@_path).to_s
      }
      
      if @_options[:filename]
        headers['Content-Disposition'] = "#{@_options[:disposition] || 'inline'}; filename=#{@_options[:filename]}"
      elsif @_options[:disposition]
        headers['Content-Disposition'] = @_options[:disposition]
      end
      
      if File.file?(@_path) && File.readable?(@_path)
        [200, headers, self]
      else
        raise "file not found: #{@_path}"
      end
    end

    def each
      File.open(@_path, "rb") { |file|
        while part = file.read(8192)
          yield part
        end
      }
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
kiss-1.8.9 lib/kiss/static_file.rb
kiss-1.8.8 lib/kiss/static_file.rb
kiss-1.8.7 lib/kiss/static_file.rb
kiss-1.8.6 lib/kiss/static_file.rb
kiss-1.8.5 lib/kiss/static_file.rb
kiss-1.8.4 lib/kiss/static_file.rb
kiss-1.8.3 lib/kiss/static_file.rb
kiss-1.8.2 lib/kiss/static_file.rb
kiss-1.8.1 lib/kiss/static_file.rb
kiss-1.8 lib/kiss/static_file.rb
kiss-1.7.4 lib/kiss/static_file.rb
kiss-1.7.2 lib/kiss/static_file.rb
kiss-1.7.1 lib/kiss/static_file.rb
kiss-1.7 lib/kiss/static_file.rb