Sha256: dfe6dad5351b75cbc4b01768c8c116a71cbcb399107bb1363b4b74c1f03a66ff

Contents?: true

Size: 921 Bytes

Versions: 1

Compression:

Stored size: 921 Bytes

Contents

require 'rubygems'
require 'mime/types'
require 'uri'

module Capcode
  module Helpers
    def render_static( f, opts = {} ) #:nodoc:
      # Update options
      opts = { :exact_path => true }.merge(opts)
      opts = (Capcode::Configuration.options[:static] || {}).merge(opts)
      
      # Path with ".." not allowed
      if Capcode.static.nil? or f.include? '..'
        return [403, {}, '403 - Invalid path']
      end
      
      # Update Content-Type
      if opts.keys.include?(:content_type)
        @response['Content-Type'] = opts[:content_type]
      else
        @response['Content-Type'] = MIME::Types.type_for(File.join( static[:path], URI.parse( f ).path ))[0].content_type
      end
      
      if !opts.keys.include?(:exact_path) or opts[:exact_path] == true
        redirect File.join( static[:uri], f )
      else
        File.read( File.join( static[:path], f ) ).to_s
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
capcode-render-static-0.4.0 lib/capcode/render/static.rb