package ru.semiot.platform.apigateway.utils;
import java.net.URI;
import javax.servlet.ServletRequest;
public class URIUtils {
private static final String COLON = ":";
private static final String PROTOCOL_SEPARATOR = "://";
private static final int HTTP_PORT = 80;
private static final int HTTPS_PORT = 443;
public static final String extractRootURL(URI uri) {
final StringBuilder builder = new StringBuilder(uri.getScheme())
.append(PROTOCOL_SEPARATOR).append(uri.getHost());
if (uri.getPort() != HTTP_PORT && uri.getPort() != HTTPS_PORT && uri.getPort() != -1) {
builder.append(COLON).append(uri.getPort());
}
return builder.toString();
}
public static final String extractHostName(URI uri) {
final StringBuilder builder = new StringBuilder(uri.getHost());
if (uri.getPort() != HTTP_PORT && uri.getPort() != HTTPS_PORT && uri.getPort() != -1) {
builder.append(COLON).append(uri.getPort());
}
return builder.toString();
}
public static final String rewriteURI(ServletRequest request, String newPath) {
final StringBuilder builder = new StringBuilder(request.getScheme())
.append(PROTOCOL_SEPARATOR)
.append(request.getServerName());
if (request.getServerPort() != HTTP_PORT && request.getServerPort() != HTTPS_PORT) {
builder.append(COLON).append(request.getServerPort());
}
builder.append(request.getServletContext().getContextPath()).append(newPath);
return builder.toString();
}
}