package com.nightscout.core.utils;
import net.tribe7.common.base.Charsets;
import net.tribe7.common.base.Splitter;
import net.tribe7.common.base.Strings;
import net.tribe7.common.hash.Hashing;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import static net.tribe7.common.base.Preconditions.checkArgument;
import static net.tribe7.common.base.Preconditions.checkNotNull;
public class RestUriUtils {
public static boolean isV1Uri(URI uri) {
return uri != null && (uri.getPath().endsWith("v1") || uri.getPath().endsWith("v1/"));
}
public static boolean hasToken(URI uri) {
return !Strings.isNullOrEmpty(uri.getUserInfo());
}
/**
* Removes the token from the uri.
*
* @param uri Non-null uri to strip the token from.
* @return uri without token.
*/
public static URI removeToken(URI uri) {
checkNotNull(uri);
// This is gross, but I don't know a better way to do it.
return URI.create(uri.toString().replaceFirst("//[^@]+@", "//"));
}
/**
* Generates a secret from the given token.
*
* @param secret Non-null, non-empty secret to generate the token from.
* @return The generated token.
*/
public static String generateSecret(String secret) {
checkArgument(!Strings.isNullOrEmpty(secret));
return Hashing.sha1().hashBytes(secret.getBytes(Charsets.UTF_8)).toString();
}
public static List<String> splitIntoMultipleUris(String combinedUris) {
if (Strings.isNullOrEmpty(combinedUris)) {
return new ArrayList<>();
}
return Splitter.onPattern("\\s+").splitToList(combinedUris.trim());
}
}