Sha256: 6bc6f9635336acb6437cea5977b12842cf276e23e57263512df7de2a677f2e00

Contents?: true

Size: 948 Bytes

Versions: 2

Compression:

Stored size: 948 Bytes

Contents

require 'rubygems'
require 'rack'

module Httplog
  module Test
  	class Server
  	  def call(env)
        @root = File.expand_path(File.dirname(__FILE__))
        path = Rack::Utils.unescape(env['PATH_INFO'])
        path += 'index.html' if path == '/'
        file = @root + "#{path}"

        params = Rack::Utils.parse_nested_query(env['QUERY_STRING'])

        headers = {"Content-Type" => "text/html"}

        if params['redirect']
          [ 301, {"Location" => "/index.html"}, '' ]

        elsif File.exists?(file)
          headers["Content-Type"] = "application/octet-stream" if File.extname(file) == '.bin'
          headers["Content-Type"] = "text/html; charset=UTF-8" if path =~ /utf8/
          headers["Content-Encoding"] = "gzip" if File.extname(file) == '.gz'
          [ 200, headers, File.binread(file) ]
        else
          [ 404, {'Content-Type' => 'text/plain'}, 'file not found' ]
        end
  	  end
  	end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
httplog-1.0.2 spec/support/test_server.rb
httplog-1.0.1 spec/support/test_server.rb