Class: TourProxy

Inherits:
Object
  • Object
show all
Defined in:
lib/tour_proxy.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ TourProxy

Initialize the proxy object.

Parameters:

  • options (Hash) (defaults to: {})

    list of options to configure the proxy.

Options Hash (options):

  • :port (Fixnum)

    Port number to listen on

  • :hostnames (Hash)

    hostnames by name => url

  • :output_buffer (IO)

    IO object to write output to



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/tour_proxy.rb', line 11

def initialize(options={})
  @server = nil
  @output_buffer = options[:output_buffer] || STDOUT
  @server = WEBrick::HTTPProxyServer.new(
                                         :Port => options[:port] || 8080,
                                         :RequestCallback => Proc.new do |req,res|
                                           log_request_as_webrat(req)
                                           # dump_request(req)
                                           # puts(("<" * 100) + " END CALLBACK")
                                         end
                                         )
end

Instance Method Details

#dump_request(request) ⇒ Object

Dumps an HTTPRequest object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/tour_proxy.rb', line 40

def dump_request(request)
  return unless @output_buffer
  puts "> dump_request"
  terms = %w(request_uri request_line raw_header body)
  longest = terms.map(&:size).max
  
  @output_buffer.puts '-' * 80
  @output_buffer.puts "Request:"
  terms.each do |term|
    @output_buffer.puts "    %#{longest}s:" % [term] # , request.send(term).to_s.length]
  end
  @output_buffer.puts '-' * 80
  @output_buffer.flush
  puts "< dump_request"
end

#dump_response(response) ⇒ Object

Dumps an HTTPResponse object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/tour_proxy.rb', line 57

def dump_response(response)
  return unless @output_buffer
  puts "> dump_response"
  terms = %w()
  longest = terms.map(&:size).max
  
  @output_buffer.puts '-' * 80
  @output_buffer.puts "Response:"
  terms.each do |term|
    @output_buffer.puts "    %#{longest}s: %s" % [term, response.send(term).to_s]
  end
  @output_buffer.puts '-' * 80
  @output_buffer.flush
  puts "< dump_response"
end

#log_request_as_webrat(request) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/tour_proxy.rb', line 24

def log_request_as_webrat(request)
  return unless @output_buffer
#    puts "> log_request_as_webrat"
  body = request.body
  if body
    items = body.split(/&/)
    pairs = items.map{ |e| e.split(/=/,2)}
    hash = Hash[pairs]
    @output_buffer.puts "visit '#{request.request_uri}', :#{request.request_method.downcase}, #{hash.inspect}"
  else
    @output_buffer.puts "visit '#{request.request_uri}', :#{request.request_method.downcase}"
  end
#    puts "< log_request_as_webrat"
end

#shutdownObject



77
78
79
# File 'lib/tour_proxy.rb', line 77

def shutdown
  @server.shutdown
end

#startObject



73
74
75
# File 'lib/tour_proxy.rb', line 73

def start
  @server.start
end