class Bundler::CompactIndexClient::Updater

def replace(remote_path, local_path, etag_path)

request without range header to get the full file or a 304 Not Modified
def replace(remote_path, local_path, etag_path)
  etag = etag_path.read.tap(&:chomp!) if etag_path.file?
  response = @fetcher.call(remote_path, request_headers(etag))
  return true if response.is_a?(Gem::Net::HTTPNotModified)
  CacheFile.write(local_path, response.body, parse_digests(response))
  CacheFile.write(etag_path, etag_from_response(response))
end