private async Task <Stream> UpdateCachedFile(string fileName, byte[] cachedFileContent, ServerServiceClient serverServiceClient, string cachedFileLocation) { List <Chunk> cachedChunks = RabinKarpAlgorithm.Slice(cachedFileContent); DifferenceChunkDto[] differenceChunkDtos = await serverServiceClient.GetUpdatedChunksAsync(fileName, cachedChunks.Select(CachedChunkDtoMapper.Map).ToArray()); byte[] newFileContent = ConstructContentOfTheUpdateFile(differenceChunkDtos, cachedChunks, fileName); System.IO.File.WriteAllBytes(cachedFileLocation, newFileContent); return(new MemoryStream(newFileContent)); }