package org.pac4j.cas.util;
import org.pac4j.core.context.HttpConstants;
import org.pac4j.core.util.CommonHelper;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* This is {@link HttpUtils} that provides utility functions
* to deal with opening connections, building error messages
* and closing connections, etc.
*
* @author Misagh Moayyed
* @since 1.8.0
*/
public final class HttpUtils {
private static int connectTimeout = HttpConstants.DEFAULT_CONNECT_TIMEOUT;
private static int readTimeout = HttpConstants.DEFAULT_READ_TIMEOUT;
private HttpUtils() {
}
public static String buildHttpErrorMessage(final HttpURLConnection connection) throws IOException {
final StringBuilder messageBuilder = new StringBuilder("(").append(connection.getResponseCode()).append(")");
if (connection.getResponseMessage() != null) {
messageBuilder.append(" ");
messageBuilder.append(connection.getResponseMessage());
}
return messageBuilder.toString();
}
public static HttpURLConnection openPostConnection(final URL url) throws IOException {
return openConnection(url, "POST");
}
public static HttpURLConnection openDeleteConnection(final URL url) throws IOException {
return openConnection(url, "DELETE");
}
public static HttpURLConnection openConnection(final URL url, final String requestMethod) throws IOException {
final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod(requestMethod);
connection.setConnectTimeout(connectTimeout);
connection.setReadTimeout(readTimeout);
return connection;
}
public static String encodeQueryParam(final String paramName, final String paramValue) throws UnsupportedEncodingException {
return CommonHelper.urlEncode(paramName) + "=" + CommonHelper.urlEncode(paramValue);
}
public static void closeConnection(final HttpURLConnection connection) {
if (connection != null) {
connection.disconnect();
}
}
public static int getConnectTimeout() {
return connectTimeout;
}
public static void setConnectTimeout(final int connectTimeout) {
HttpUtils.connectTimeout = connectTimeout;
}
public static int getReadTimeout() {
return readTimeout;
}
public static void setReadTimeout(final int readTimeout) {
HttpUtils.readTimeout = readTimeout;
}
}