module Pact::Consumer::RequestExtractor

def headers_from env

def headers_from env
  headers = env.reject{ |key, value| !(key.start_with?("HTTP") || key == 'CONTENT_TYPE')}
  headers.inject({}) do | hash, header |
    hash[standardise_header(header.first)] = header.last
    hash
  end
end

def request_from env

def request_from env
  request = env.inject({}) do |memo, (k, v)|
    request_key = REQUEST_KEYS[k]
  memo[request_key] = v if request_key
  memo
  end
  mashed_request = Hashie::Mash.new request
  mashed_request[:headers] = headers_from env
  body_string = mashed_request[:body].read
  if body_string.empty?
    mashed_request.delete :body
  else
    body_is_json = mashed_request[:headers]['Content-Type'] =~ /json/
    mashed_request[:body] =  body_is_json ? JSON.parse(body_string) : body_string
  end
  mashed_request[:method] = mashed_request[:method].downcase
  mashed_request
end

def standardise_header header

def standardise_header header
  header.gsub(/^HTTP_/, '').split("_").collect{|word| word[0] + word[1..-1].downcase}.join("-")
end