Class: Shokkenki::Consumer::Stubber::StubServerMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/shokkenki/consumer/stubber/stub_server_middleware.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeStubServerMiddleware

Returns a new instance of StubServerMiddleware.



15
16
17
18
19
20
21
22
23
24
# File 'lib/shokkenki/consumer/stubber/stub_server_middleware.rb', line 15

def initialize
  @interactions = Interactions.new
  @middlewares = {
    %r{^#{identify_path}} => lambda(&method(:identify)),
    %r{^/shokkenki/interactions/unused} => UnusedInteractionsMiddleware.new(@interactions),
    %r{^/shokkenki/interactions} => InteractionsMiddleware.new(@interactions),
    %r{^/shokkenki/requests/unmatched} => UnmatchedRequestsMiddleware.new(@interactions),
    /.*/ => StubbedResponseMiddleware.new(@interactions)
  }
end

Instance Attribute Details

#errorObject

Returns the value of attribute error.



13
14
15
# File 'lib/shokkenki/consumer/stubber/stub_server_middleware.rb', line 13

def error
  @error
end

Instance Method Details

#call(env) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/shokkenki/consumer/stubber/stub_server_middleware.rb', line 26

def call env
  begin
    handler = @middlewares.find {|path, m| path.match(env['PATH_INFO']) }[1]
    handler.call env
  rescue StandardError => e
    @error = e unless @error
    raise e
  end
end

#identify(env) ⇒ Object



36
37
38
# File 'lib/shokkenki/consumer/stubber/stub_server_middleware.rb', line 36

def identify env
  [200, {}, [object_id.to_s]]
end

#identify_pathObject



40
41
42
# File 'lib/shokkenki/consumer/stubber/stub_server_middleware.rb', line 40

def identify_path
  '/shokkenki/__identify__'
end