Esempio n. 1
0
        [Trait("Category", "integration")] // because it talks to nuget.org
        public async Task CacheGetPackageVersions()
        {
            InitializeClient(CacheIndex);
            var findByIdRes = new RemoteV3FindPackageByIdResource(_sourceRepository, _httpSource.HttpSource);
            var versions    = await findByIdRes.GetAllVersionsAsync("log4net",
                                                                    _cacheContext, logger, CancellationToken.None);

            Assert.Contains(versions, p => p.Equals(NuGetVersion.Parse("2.0.8")));
        }
Esempio n. 2
0
        [Trait("Category", "integration")] // because it uses external nupkg files
        public async Task Push2VersionsAndGetPackageVersions()
        {
            InitializeClient(MainIndex);
            var packageResource = await _sourceRepository.GetResourceAsync <PackageUpdateResource>();

            await packageResource.Push(TestResources.GetNupkgBagetTwoV1(),
                                       null, 5, false, GetApiKey, GetApiKey, false, logger);

            await packageResource.Push(TestResources.GetNupkgBagetTwoV2(),
                                       null, 5, false, GetApiKey, GetApiKey, false, logger);

            var findByIdRes = new RemoteV3FindPackageByIdResource(_sourceRepository, _httpSource.HttpSource);
            var versions    = await findByIdRes.GetAllVersionsAsync("liget-two",
                                                                    _cacheContext, logger, CancellationToken.None);

            Assert.Contains(versions, p => p.Equals(NuGetVersion.Parse("1.0.0")));
            Assert.Contains(versions, p => p.Equals(NuGetVersion.Parse("2.1.0")));
        }
Esempio n. 3
0
 public Task <IEnumerable <NuGetVersion> > GetAllVersionsAsync(string id, CancellationToken ct)
 {
     return(_versionSearch.GetAllVersionsAsync(id, _cacheContext, _loggerAdapter, ct));
 }
Esempio n. 4
0
        // Usage nuget-mirror -package {package} -source {sourceName} -destination {destinationName} -apikey {apikey}

        static async Task Main(string[] args)
        {
            try
            {
                var commandLineParser = new SimpleCommandLineParser();
                commandLineParser.Parse(args);
                var package             = commandLineParser.Arguments["package"][0];
                var sourceFeedName      = commandLineParser.Arguments["source"][0];
                var destinationFeedName = commandLineParser.Arguments["destination"][0];
                var apiKey = commandLineParser.Arguments["apikey"][0];

                // Get package sources from configs
                var settings = Settings.LoadDefaultSettings(Assembly.GetEntryAssembly().Location);
                var sourceRepositoryProvider = new SourceRepositoryProvider(settings, Repository.Provider.GetCoreV3());
                var packageSources           = sourceRepositoryProvider.PackageSourceProvider.LoadPackageSources().ToArray();
                var sourcePackageSource      = packageSources.Single(s => s.Name == sourceFeedName);
                var destinationPackageSource = packageSources.Single(s => s.Name == destinationFeedName);

                // Source feed setup
                var sourceRepository   = sourceRepositoryProvider.CreateRepository(sourcePackageSource, FeedType.HttpV3);
                var sourceHttpSource   = HttpSource.Create(sourceRepository);
                var sourcePackagesFind = new RemoteV3FindPackageByIdResource(sourceRepository, sourceHttpSource);

                // Destination feed setup
                var destinationRepository = sourceRepositoryProvider.CreateRepository(destinationPackageSource, FeedType.HttpV3);
                var destinationHttpSource = HttpSource.Create(destinationRepository);
                var destinationPackages   =
                    new RemoteV3FindPackageByIdResource(destinationRepository, destinationHttpSource);
                var updateResource = await destinationRepository.GetResourceAsync <PackageUpdateResource>();

                var logger = new NullLogger();

                using (var sourceCacheContext = new SourceCacheContext())
                    using (var destinationCacheContext = new SourceCacheContext())
                    {
                        // List all versions from source
                        var sourcePackageVersions = (await sourcePackagesFind
                                                     .GetAllVersionsAsync(package, sourceCacheContext, logger,
                                                                          CancellationToken.None))
                                                    .Select(p => p.OriginalVersion);

                        // List all versions from destination
                        var destinationPackageVersions = (await destinationPackages
                                                          .GetAllVersionsAsync(package, destinationCacheContext, logger,
                                                                               CancellationToken.None))
                                                         .Select(p => p.OriginalVersion);

                        // See what versions are missing
                        var missingVersions = sourcePackageVersions
                                              .Where(version => !destinationPackageVersions.Contains(version))
                                              .ToArray();

                        // Push missing versions
                        var tempPath = Path.GetTempPath();
                        foreach (var version in missingVersions)
                        {
                            Console.WriteLine($"Mirroring {package}.{version}...");
                            // download
                            var packageDownloader = await sourcePackagesFind.GetPackageDownloaderAsync(
                                new PackageIdentity(package, new NuGetVersion(version)),
                                sourceCacheContext, logger, CancellationToken.None);

                            var destinationFilePath = Path.Combine(tempPath, $"OwinHttpMessageHandler.{version}.nupkg");
                            await packageDownloader.CopyNupkgFileToAsync(destinationFilePath, CancellationToken.None);

                            // push
                            await updateResource.Push(destinationFilePath, null, 600, false, s => apiKey, _ => null,
                                                      logger);
                        }
                    }
                Console.WriteLine("Complete.");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }