Class: RequestReplay::Proxy

Inherits:
Object
  • Object
show all
Defined in:
lib/request-replay/proxy.rb

Instance Method Summary collapse

Constructor Details

#initialize(host, options = {}) ⇒ Proxy

Returns a new instance of Proxy.



5
6
7
8
9
# File 'lib/request-replay/proxy.rb', line 5

def initialize host, options={}
  @host, @options = host, options
  # since we're hijacking, we don't manage connections
  (@options[:add_headers] ||= {})['Connection'] ||= 'close'
end

Instance Method Details

#call(env) ⇒ Object



11
12
13
14
# File 'lib/request-replay/proxy.rb', line 11

def call env
  replay(rewrite_env(env), env['rack.hijack'].call)
  [200, {}, []]
end

#replay(env, io) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/request-replay/proxy.rb', line 16

def replay env, io
  RequestReplay.new(env, @host, @options).start do |sock|
    IO.copy_stream(sock, io)
  end
ensure
  io.close
end

#rewrite_env(env) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/request-replay/proxy.rb', line 24

def rewrite_env env
  if rewrite = @options[:rewrite_env]
    rewrite.call(env)
  else
    env
  end
end