public static async Task Run( [TimerTrigger("* */1 * * * *", RunOnStartup = true)] TimerInfo timer, [Queue(Constants.IndexingQueue, Connection = Constants.IndexingQueueConnection)] ICollector <PackageOperation> queueCollector, ILogger logger) { var cursor = new InMemoryCursor(timer.ScheduleStatus?.Last ?? DateTimeOffset.UtcNow); var processor = new CatalogProcessor( cursor, new CatalogClient(HttpClient, new NullLogger <CatalogClient>()), new DelegatingCatalogLeafProcessor( added => { var packageVersion = added.ParsePackageVersion(); queueCollector.Add(PackageOperation.ForAdd( added.PackageId, added.PackageVersion, added.VerbatimVersion, packageVersion.ToNormalizedString(), added.Published, string.Format(Constants.NuGetPackageUrlTemplate, added.PackageId, packageVersion.ToNormalizedString()).ToLowerInvariant(), added.IsListed())); return(Task.FromResult(true)); }, deleted => { queueCollector.Add(PackageOperation.ForDelete( deleted.PackageId, deleted.PackageVersion, deleted.ParsePackageVersion().ToNormalizedString())); return(Task.FromResult(true)); }), new CatalogProcessorSettings { MinCommitTimestamp = timer.ScheduleStatus?.Last ?? DateTimeOffset.UtcNow, MaxCommitTimestamp = timer.ScheduleStatus?.Next ?? DateTimeOffset.UtcNow, ServiceIndexUrl = "https://api.nuget.org/v3/index.json" }, new NullLogger <CatalogProcessor>()); await processor.ProcessAsync(CancellationToken.None); }
static async Task Main(string[] args) { var httpClient = new HttpClient(); var cursor = new InMemoryCursor(null); var processor = new BatchCatalogProcessor( cursor, new CatalogClient(httpClient, new NullLogger <CatalogClient>()), new DelegatingCatalogLeafProcessor( added => { var packageVersion = added.ParsePackageVersion(); Console.WriteLine("[ADDED] {2} - {0}@{1}", added.PackageId, packageVersion.ToNormalizedString(), added.Created); return(Task.FromResult(true)); }, deleted => { var packageVersion = deleted.ParsePackageVersion(); Console.ForegroundColor = ConsoleColor.Red; Console.Write("[DELETED] "); Console.ResetColor(); Console.WriteLine("{2} - {0}@{1}", deleted.PackageId, packageVersion.ToNormalizedString(), deleted.CommitTimestamp); return(Task.FromResult(true)); }), new CatalogProcessorSettings { MinCommitTimestamp = DateTimeOffset.MinValue, ServiceIndexUrl = "https://api.nuget.org/v3/index.json" }, new NullLogger <BatchCatalogProcessor>()); await processor.ProcessAsync(CancellationToken.None); }