NuGet.Services.Metadata.Catalog.Registration.RegistrationMakerCatalogWriter.SavePages C# (CSharp) Method

SavePages() protected method

protected SavePages ( System.Guid commitId, System.DateTime commitTimeStamp, CatalogItemSummary>.IDictionary itemEntries, CancellationToken cancellationToken ) : CatalogItemSummary>>.Task
commitId System.Guid
commitTimeStamp System.DateTime
itemEntries CatalogItemSummary>.IDictionary
cancellationToken System.Threading.CancellationToken
return CatalogItemSummary>>.Task
        protected override async Task<IDictionary<string, CatalogItemSummary>> SavePages(Guid commitId, DateTime commitTimeStamp, IDictionary<string, CatalogItemSummary> itemEntries, CancellationToken cancellationToken)
        {
            SortedDictionary<NuGetVersion, KeyValuePair<string, CatalogItemSummary>> versions = new SortedDictionary<NuGetVersion, KeyValuePair<string, CatalogItemSummary>>();

            //  load items from existing pages

            IDictionary<string, CatalogItemSummary> pageEntries = await LoadIndexResource(RootUri, cancellationToken);

            foreach (KeyValuePair<string, CatalogItemSummary> pageEntry in pageEntries)
            {
                IDictionary<string, CatalogItemSummary> pageItemEntries = await LoadIndexResource(new Uri(pageEntry.Key), cancellationToken);

                foreach (KeyValuePair<string, CatalogItemSummary> pageItemEntry in pageItemEntries)
                {
                    NuGetVersion version = GetPackageVersion(new Uri(pageItemEntry.Key), pageItemEntry.Value.Content);
                    versions.Add(version, pageItemEntry);
                }
            }

            //  add new items

            foreach (KeyValuePair<string, CatalogItemSummary> itemEntry in itemEntries)
            {
                NuGetVersion version = GetPackageVersion(new Uri(itemEntry.Key), itemEntry.Value.Content);
                versions[version] = itemEntry;
            }

            //  (re)create pages

            IDictionary<string, CatalogItemSummary> newPageEntries = await PartitionAndSavePages(commitId, commitTimeStamp, versions, cancellationToken);

            //  add to list of pages to clean up

            if (_cleanUpList != null)
            {
                foreach (string existingPage in pageEntries.Keys)
                {
                    if (!newPageEntries.ContainsKey(existingPage))
                    {
                        _cleanUpList.Add(new Uri(existingPage));
                    }
                }
            }

            return newPageEntries;
        }