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."); }
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()); }
/// <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>(); }