public async Task UploadChangeHistoryAsync(IReadOnlyList <string> packageIds) { if (packageIds.Count == 0) { throw new ArgumentException("The list of package IDs must have at least one element.", nameof(packageIds)); } using (_telemetryService.TrackUploadOwnerChangeHistory(packageIds.Count)) { var timestamp = DateTimeOffset.UtcNow.ToString("yyyy-MM-dd-HH-mm-ss-FFFFFFF"); var blobName = $"{_options.Value.NormalizeStoragePath()}owners/changes/{timestamp}.json"; _logger.LogInformation("Uploading owner changes to {BlobName}.", blobName); var blobReference = Container.GetBlobReference(blobName); using (var stream = await blobReference.OpenWriteAsync(AccessCondition.GenerateIfNotExistsCondition())) using (var streamWriter = new StreamWriter(stream)) using (var jsonTextWriter = new JsonTextWriter(streamWriter)) { blobReference.Properties.ContentType = "application/json"; Serializer.Serialize(jsonTextWriter, packageIds); } } }