Class: Capybara::Webmock::Proxy

Inherits:
Rack::Proxy
  • Object
show all
Defined in:
lib/capybara/webmock/proxy.rb

Constant Summary collapse

PID_FILE =
File.join('tmp', 'pids', 'capybara_webmock_proxy.pid')

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pid) ⇒ Proxy

Returns a new instance of Proxy.



7
8
9
10
# File 'lib/capybara/webmock/proxy.rb', line 7

def initialize(pid)
  write_pid(pid)
  ensure_log_exists
end

Class Method Details

.remove_pidObject



28
29
30
# File 'lib/capybara/webmock/proxy.rb', line 28

def self.remove_pid
  File.delete(PID_FILE) if File.exist?(PID_FILE)
end

Instance Method Details

#call(env) ⇒ Object



12
13
14
15
# File 'lib/capybara/webmock/proxy.rb', line 12

def call(env)
  @streaming = true
  super
end

#perform_request(env) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/capybara/webmock/proxy.rb', line 17

def perform_request(env)
  request = Rack::Request.new(env)
  allowed_urls = ['127.0.0.1', 'localhost', %r{(.*\.|\A)lvh.me}]

  if allowed_url?(allowed_urls, request.host)
    super(env)
  else
    ['200', {'Content-Type' => 'text/html'}, ['']]
  end
end

#rewrite_response(triplet) ⇒ Object



32
33
34
35
36
# File 'lib/capybara/webmock/proxy.rb', line 32

def rewrite_response(triplet)
  status, headers, body = triplet
  headers.delete "transfer-encoding"
  triplet
end