コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }