public RemoteServers()

in CachingProxy/src/Prefixes.cs [12:41]


    public RemoteServers(IEnumerable<string> prefixes, ICollection<string> contentTypeValidationPrefixes)
    {
      var trimmedPrefixes = new HashSet<string>();

      // Order by length here to handle longer prefixes first
      // This will help to handle overlapping prefixes like:
      // /aprefix
      // /aprefix/too
      foreach (var prefix in prefixes.OrderByDescending(x => x.Length))
      {
        var trimmed = prefix.Trim('/');
        if (trimmed.Length == 0) throw new ArgumentException("Prefix is empty: " + prefix);

        var index = trimmed.IndexOf('=');
        var trimmedPrefix = index < 0 ? $"/{trimmed}" : $"/{trimmed[..index]}";
        trimmedPrefixes.Add(trimmedPrefix);

        var validateContentType = contentTypeValidationPrefixes.Contains(trimmedPrefix);
        myServers.Add(index < 0
          ? new RemoteServer(new PathString(trimmedPrefix), new Uri("https://" + trimmed + "/"), validateContentType)
          : new RemoteServer(new PathString(trimmedPrefix), new Uri(trimmed[(index + 1)..].TrimEnd('/')), validateContentType));
      }

      foreach (var contentTypeValidationPrefix in contentTypeValidationPrefixes)
      {
        if (!trimmedPrefixes.Contains(contentTypeValidationPrefix))
          throw new ArgumentException(
            $"ContentTypeValidation prefix '{contentTypeValidationPrefix}' must be present in Prefixes list");
      }
    }