class SiteToSiteRestApiClient implements Closeable {

    public static Set<String> parseClusterUrls(final String clusterUrlStr) {
        final Set<String> urls = new LinkedHashSet<>();
        if (clusterUrlStr != null && clusterUrlStr.length() > 0) {
            Arrays.stream(clusterUrlStr.split(","))
                    .map(s -> s.trim())
                    .filter(s -> s.length() > 0)
                    .forEach(s -> {
                        validateUriString(s);
                        urls.add(resolveBaseUrl(s).intern());
                    });
        }

        if (urls.size() == 0) {
            throw new IllegalArgumentException("Cluster URL was not specified.");
        }

        final Predicate<String> isHttps = url -> url.toLowerCase().startsWith("https:");
        if (urls.stream().anyMatch(isHttps) && urls.stream().anyMatch(isHttps.negate())) {
            throw new IllegalArgumentException("Different protocols are used in the cluster URLs " + clusterUrlStr);
        }

        return Collections.unmodifiableSet(urls);
    }

    public  SiteToSiteRestApiClient(final SSLContext sslContext, final HttpProxy proxy, final EventReporter eventReporter);

}