Sha256: 42f30c45e5622afe4877e677206057bedbd405270a7205d0b7b17979d22b856c

Contents?: true

Size: 956 Bytes

Versions: 1

Compression:

Stored size: 956 Bytes

Contents

module Terminus
  class Proxy

    class External < Rack::Proxy
      attr_reader :uri

      def initialize(uri)
        uri.host.gsub!(LOCALHOST, '127.0.0.1')
        @uri = uri
      end

      def call(env)
        dock_host = env['SERVER_NAME']
        response = super
        response[1].delete('transfer-encoding')
        response[2].extend(Rewrite)
        response[2].dock_host = dock_host
        response
      end

      def host
        "#{@uri.host}:#{@uri.port}"
      end

      def rewrite_env(env)
        env = env.dup
        env['SERVER_NAME'] = @uri.host
        env['SERVER_PORT'] = @uri.port
        env['HTTP_HOST']   = "#{@uri.host}:#{@uri.port}"
        env.delete('HTTP_ACCEPT_ENCODING')

        if scheme = @uri.scheme
          env['rack.url_scheme'] = scheme
        end

        if %w[PUT POST].include?(env['REQUEST_METHOD'])
          env['CONTENT_LENGTH'] ||= '0'
        end

        env
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
terminus-0.6.0 lib/terminus/proxy/external.rb