Class: HttpMonkey::Client::EnvironmentBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/http_monkey/client/environment_builder.rb

Overview

Great inspiration from github.com/rack/rack/blob/master/lib/rack/mock.rb, specially from Rack::MockRequest

Constant Summary collapse

DEFAULT_ENV =
{
  "rack.version" => Rack::VERSION,
  "rack.input" => nil,
  "rack.errors" => STDERR,
  "rack.multithread" => true,
  "rack.multiprocess" => false,
  "rack.run_once" => false,
  'SCRIPT_NAME'     => "" # call me Suzy
}

Instance Method Summary collapse

Constructor Details

#initialize(client, method, request) ⇒ EnvironmentBuilder

Returns a new instance of EnvironmentBuilder.



17
18
19
20
21
# File 'lib/http_monkey/client/environment_builder.rb', line 17

def initialize(client, method, request)
  @client = client
  @method = method
  @request = request
end

Instance Method Details

#to_envObject

Returns a instance of HttpMonkey::Client::Environment with rack like headers.



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/http_monkey/client/environment_builder.rb', line 25

def to_env
  rack_input = normalize_body(@request.body)

  env = HttpMonkey::Client::Environment.new(DEFAULT_ENV)
  env.uri = @request.url

  env.update({
    # request info
    'REQUEST_METHOD'  => @method.to_s.upcase,

    'rack.input'      => rack_input,
    'CONTENT_LENGTH'  => rack_input.length.to_s,

    # custom info
    'http_monkey.request' => [@method, @request, @client],
    'http_monkey.storage' => @client.storage
  })
  env.add_http_header(@request.headers)
  env
end