class WebMock::HttpLibAdapters::PatronAdapter

def self.build_request_signature(req)

def self.build_request_signature(req)
  uri = WebMock::Util::URI.heuristic_parse(req.url)
  uri.path = uri.normalized_path.gsub("[^:]//","/")
  if [:put, :post, :patch].include?(req.action)
    if req.file_name
      if !File.exist?(req.file_name) || !File.readable?(req.file_name)
        raise ArgumentError.new("Unable to open specified file.")
      end
      request_body = File.read(req.file_name)
    elsif req.upload_data
      request_body = req.upload_data
    else
      raise ArgumentError.new("Must provide either data or a filename when doing a PUT or POST")
    end
  end
  headers = req.headers
  if req.credentials
    headers['Authorization'] = WebMock::Util::Headers.basic_auth_header(req.credentials)
  end
  request_signature = WebMock::RequestSignature.new(
    req.action,
    uri.to_s,
    body: request_body,
    headers: headers
  )
  request_signature
end