Esempio n. 1
0
        public void TestAddRepositoryWithExists(string expected)
        {
            var foo = new ConfigRepositoryVcs()
            {
                Name       = "foo",
                Type       = "vcs",
                Uri        = "http://foo.com",
                SecureHttp = false,
            };

            source.AddRepository(foo);

            var bar = new ConfigRepositoryBucket()
            {
                Type = "bucket",
                Uri  = "http://foo.com",
                AllowSSLDowngrade = false,
            };

            source.AddRepository(bar);

            foo.Uri = "http://bar.com";
            source.AddRepository(foo);

            Assert.AreEqual(expected, jsonFile.GetWriteContents(), "Cannot modify the order of the repository.");
        }
Esempio n. 2
0
        public void TestRemoveRepository(string expected)
        {
            var foo = new ConfigRepositoryVcs()
            {
                Name       = "foo",
                Type       = "vcs",
                Uri        = "http://foo.com",
                SecureHttp = false,
            };

            source.AddRepository(foo);

            var bar = new ConfigRepositoryBucket()
            {
                Type = "bucket",
                Uri  = "http://foo.com",
                AllowSSLDowngrade = false,
            };

            source.AddRepository(bar);

            source.RemoveRepository("foo");

            Assert.AreEqual(expected, jsonFile.GetWriteContents());
        }
Esempio n. 3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RepositoryBucket"/> class.
        /// </summary>
        public RepositoryBucket(
            ConfigRepositoryBucket configRepository,
            IIO io,
            Config config,
            ITransport transport             = null,
            IEventDispatcher eventDispatcher = null,
            IVersionParser versionParser     = null)
        {
            if (!Regex.IsMatch(configRepository.Uri, @"^[\w.]+\??://"))
            {
                // assume http as the default protocol
                configRepository.Uri = $"http://{configRepository.Uri}";
            }

            configRepository.Uri = configRepository.Uri.TrimEnd('/');

            if (configRepository.Uri.StartsWith("https?", StringComparison.OrdinalIgnoreCase))
            {
                configRepository.Uri = $"https{configRepository.Uri.Substring(6)}";
                uriIsIntelligent     = true;
            }

            if (!Uri.TryCreate(configRepository.Uri, UriKind.RelativeOrAbsolute, out _))
            {
                throw new ConfigException($"Invalid url given for Bucket repository: {configRepository.Uri}");
            }

            // changes will not be applied to configRepository.
            uri = configRepository.Uri;

            // force url for gxpack.org to repo.gxpack.org
            // without converting other addresses.
            var match = Regex.Match(configRepository.Uri, @"^(?<proto>https?)://gxpack\.org/?$", RegexOptions.IgnoreCase);

            if (match.Success)
            {
                uri = $"{match.Groups["proto"].Value}://repo.gxpack.org";
            }

            baseUri = Regex.Replace(uri, @"(?:/[^/\\\\]+\.json)?(?:[?#].*)?$", string.Empty).TrimEnd('/');

            this.configRepository = configRepository;
            this.io              = io;
            this.transport       = transport ?? new TransportHttp(io, config);
            this.eventDispatcher = eventDispatcher;
            this.versionParser   = versionParser ?? new BVersionParser();

            var cacheDir = Path.Combine(config.Get(Settings.CacheDir), CacheFileSystem.FormatCacheFolder(uri));

            cache          = new CacheFileSystem(cacheDir, io, "a-z0-9.$~");
            loader         = new LoaderPackage(versionParser);
            providersByUid = new Dictionary <int, IPackage>();
        }