class Pact::Consumer::MockService

def call env

def call env
  response = []
  begin
    relevant_handler = @handlers.detect { |handler| handler.match? env }
    response = relevant_handler.respond env
  rescue Exception => e
    @logger.ap 'Error ocurred in mock service:'
    @logger.ap e
    @logger.ap e.backtrace
    raise e
  end
  response
end

def initialize options = {}

def initialize options = {}
  options = {log_file: STDOUT}.merge options
  log_stream = options[:log_file]
  @logger = Logger.new log_stream
  log_description = if log_stream.is_a? File
     File.absolute_path(log_stream).gsub(Dir.pwd + "/", '')
  else
    "standard out/err"
  end
  interaction_list = InteractionList.new
  @name = options.fetch(:name, "MockService")
  @handlers = [
    StartupPoll.new(@name, @logger),
    CapybaraIdentify.new(@name, @logger),
    MissingInteractionsGet.new(@name, @logger, interaction_list),
    VerificationGet.new(@name, @logger, log_description, interaction_list),
    InteractionPost.new(@name, @logger, interaction_list),
    InteractionDelete.new(@name, @logger, interaction_list),
    InteractionReplay.new(@name, @logger, interaction_list)
  ]
end

def to_s

def to_s
  "#{@name} #{super.to_s}"
end