示例#1
0
 public Options()
 {
     Mirror = new MirrorOptions();
     Play   = new PlayOptions();
     Test   = new TestOptions();
     Server = new ServerOptions();
 }
示例#2
0
        public static void EnsureValid(this MirrorOptions options)
        {
            if (options == null)
            {
                ThrowMissingConfiguration(nameof(BaGetOptions.Mirror));
            }

            if (!options.Enabled)
            {
                return;
            }

            if (options.UpstreamIndex == null)
            {
                ThrowMissingConfiguration(
                    nameof(BaGetOptions.Mirror),
                    nameof(MirrorOptions.UpstreamIndex));
            }

            if (options.PackagesPath == null)
            {
                ThrowMissingConfiguration(
                    nameof(BaGetOptions.Mirror),
                    nameof(MirrorOptions.PackagesPath));
            }

            if (options.PackageDownloadTimeoutSeconds <= 0)
            {
                options.PackageDownloadTimeoutSeconds = 600;
            }
        }
示例#3
0
 public MirrorService(
     INuGetClient client,
     IPackageCacheService localPackages,
     IPackageDownloader downloader,
     ILogger <MirrorService> logger,
     MirrorOptions options)
 {
     _startLock          = new object();
     _downloads          = new Dictionary <PackageIdentity, Task>();
     _localPackages      = localPackages ?? throw new ArgumentNullException(nameof(localPackages));
     _downloader         = downloader ?? throw new ArgumentNullException(nameof(downloader));
     _logger             = logger ?? throw new ArgumentNullException(nameof(logger));
     this._loggerAdapter = new NuGetLoggerAdapter <MirrorService>(_logger);
     _sourceRepository   = client.GetRepository(options.UpstreamIndex);
 }
示例#4
0
        /// <summary>
        /// Synchronizes local and remote folders.
        /// </summary>
        public void DoMirror(bool remoteIsMaster)
        {
            EnableProgress(true);

            MirrorOptions opt = new MirrorOptions();

            opt.Recursive       = _loginInfo.Get <RecursionMode>(LoginInfo.SyncRecursive);
            opt.SearchCondition = new NameSearchCondition(_loginInfo.Get <string>(LoginInfo.SyncSearchPattern));

            _mirrorSavedRestoreState      = _client.RestoreFileProperties ? 1 : 0;
            _client.RestoreFileProperties = _loginInfo.Get <bool>(LoginInfo.SyncDateTime);

            switch (_loginInfo.Get <int>(LoginInfo.SyncMethod))
            {
            case 0:
                opt.Comparer = FileComparers.FileLastWriteTimeComparer;
                break;

            case 1:
                opt.Comparer = _loginInfo.Get <bool>(LoginInfo.SyncResumability) ? FileComparers.FileContentComparerWithResumabilityCheck : FileComparers.FileContentComparer;
                break;

            case 2:
                opt.Comparer = FileComparers.FileNameComparer;
                break;
            }

#if Framework4_5 || !ASYNC
            try
            {
#if !ASYNC
                // Asynchronously synchronize folders.
                client.MirrorAsync(txtRemoteDir.Text, txtLocalDir.Text, dlg.RemoteIsMaster, opt, dlg.RemoteIsMaster);
#else
                client.Mirror(txtRemoteDir.Text, txtLocalDir.Text, dlg.RemoteIsMaster, opt);
#endif
            }
            catch (Exception ex)
            {
            }

            DoMirrorPost(dlg.RemoteIsMaster);
#else
            // Asynchronously synchronize folders.
            _client.MirrorAsync(_currentDirectory, _currentLocalDirectory, remoteIsMaster, opt, remoteIsMaster);
#endif
        }
        public MirrorServiceIntegrationTest(ITestOutputHelper helper)
        {
            var logger = new XunitLoggerProvider(helper);

            tempDir = new TempDir();
            IPackageCacheService localPackages = new FileSystemPackageCacheService(tempDir.UniqueTempFolder);
            IPackageDownloader   downloader    = new PackageDownloader(new System.Net.Http.HttpClient(),
                                                                       logger.CreateLogger <PackageDownloader>("MirrorServiceItest"));
            MirrorOptions options = new MirrorOptions()
            {
                Enabled       = true,
                UpstreamIndex = new System.Uri("https://api.nuget.org/v3/index.json"),
                PackagesPath  = tempDir.UniqueTempFolder,
                PackageDownloadTimeoutSeconds = 10
            };

            mirrorService = new MirrorService(new NuGetClient(logger.CreateLogger <NuGetClient>("MirrorServiceItest")), localPackages, downloader, logger.CreateLogger <MirrorService>("MirrorServiceItest"), options);
        }
示例#6
0
        public MirrorServiceTest(ITestOutputHelper helper)
        {
            var logger = new XunitLoggerProvider(helper);

            localPackages = new Mock <IPackageCacheService>(MockBehavior.Strict);
            localPackages.Setup(p => p.AddPackageAsync(It.IsAny <Stream>())).Returns(Task.CompletedTask);
            downloader = new Mock <IPackageDownloader>(MockBehavior.Strict);
            downloader.Setup(d => d.DownloadOrNullAsync(It.IsAny <Uri>(), It.IsAny <CancellationToken>())).ReturnsAsync(new MemoryStream());
            MirrorOptions options = new MirrorOptions()
            {
                Enabled = true,
                PackageDownloadTimeoutSeconds = 10,
                UpstreamIndex = new Uri("http://example.com")
            };

            client     = new Mock <INuGetClient>(MockBehavior.Strict);
            sourceRepo = new Mock <ISourceRepository>(MockBehavior.Strict);
            sourceRepo.Setup(s => s.GetPackageUriAsync(It.Is <string>(p => p == "log4net"), It.Is <string>(p => p == "2.0.8"), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new Uri("http://example.com/package/1"));
            client.Setup(c => c.GetRepository(options.UpstreamIndex)).Returns(sourceRepo.Object);
            mirrorService = new MirrorService(client.Object, localPackages.Object, downloader.Object, logger.CreateLogger <MirrorService>("MirrorServiceTest"), options);
        }
 public MirrorController(IOptions <MirrorOptions> accessor)
 {
     _options = accessor.Value;
 }
示例#8
0
 public Options()
 {
     Mirror = new MirrorOptions();
     Test   = new TestOptions();
 }