Class: Ww::Double::Spy::Request

Inherits:
Rack::Request
  • Object
show all
Defined in:
lib/ww/double/spy/request.rb

Constant Summary collapse

@@req_parsers =
[]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(req_or_env) ⇒ Request

Returns a new instance of Request.



27
28
29
30
31
# File 'lib/ww/double/spy/request.rb', line 27

def initialize(req_or_env)
  env = req_or_env.is_a?(Rack::Request) ? req_or_env.env : req_or_env
  super(env.dup)
  @time = Time.now
end

Instance Attribute Details

#timeObject (readonly)

Returns the value of attribute time.



8
9
10
# File 'lib/ww/double/spy/request.rb', line 8

def time
  @time
end

Class Method Details

.regist_request_parser(pattern, &block) ⇒ Object



11
12
13
# File 'lib/ww/double/spy/request.rb', line 11

def self.regist_request_parser(pattern, &block)
  @@req_parsers << [pattern, block]
end

Instance Method Details

#parsed_bodyObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/ww/double/spy/request.rb', line 33

def parsed_body
  return "" if get?
  return self.POST if form_data?

  @body ||=
    begin
      body.read
    ensure
      body.rewind
    end

  _, processor = @@req_parsers.detect{|re, ignore| re =~ media_type }
  processor ? processor.call(@body) : @body
end