You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.5 KiB
87 lines
2.5 KiB
package com.github.jreddit.request.util;
|
|
|
|
import java.io.UnsupportedEncodingException;
|
|
import java.net.URLEncoder;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
public class KeyValueFormatter {
|
|
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(KeyValueFormatter.class);
|
|
|
|
private KeyValueFormatter() {
|
|
// Left empty to prevent instantiation of this utility class
|
|
}
|
|
|
|
/**
|
|
* Format a mapping of key-value pairs to a string, separating key from value using an
|
|
* equals (=) sign, and separating pairs using an ampersand (&) sign.
|
|
*
|
|
* @param keyValueParameters Mapping of key-value pairs
|
|
* @param encodeUTF8 Whether or not the values should be encoded in UTF-8
|
|
*
|
|
* @return Formatted string of key-value pairs (e.g. "a=1&b=something")
|
|
*/
|
|
public static String format(Map<String, String> keyValueParameters, boolean encodeUTF8) {
|
|
|
|
// Key set
|
|
Set<String> keys = keyValueParameters.keySet();
|
|
|
|
// Iterate over keys
|
|
String paramsString = "";
|
|
boolean start = true;
|
|
for (String key : keys) {
|
|
|
|
// Add separation ampersand
|
|
if (!start) {
|
|
paramsString = paramsString.concat("&");
|
|
} else {
|
|
start = false;
|
|
}
|
|
|
|
// Retrieve value
|
|
String value = keyValueParameters.get(key);
|
|
|
|
// Encode key
|
|
if (encodeUTF8) {
|
|
try {
|
|
value = URLEncoder.encode(value, "UTF-8");
|
|
} catch (UnsupportedEncodingException e) {
|
|
LOGGER.warn("Unsupported Encoding Exception thrown when encoding value", e);
|
|
}
|
|
}
|
|
|
|
// Add key-value pair
|
|
paramsString = paramsString.concat(key + "=" + value);
|
|
|
|
}
|
|
|
|
// Return final parameter string
|
|
return paramsString;
|
|
|
|
}
|
|
|
|
/**
|
|
* Format a comma separated list of the given list.
|
|
*
|
|
* @param list List of strings
|
|
*
|
|
* @return Comma-separated list string (e.g. "a,b,c,d")
|
|
*/
|
|
public static String formatCommaSeparatedList(List<String> list) {
|
|
StringBuilder builder = new StringBuilder();
|
|
for (int i = 0; i < list.size(); i++) {
|
|
if (i != 0) {
|
|
builder.append(",");
|
|
}
|
|
builder.append(list.get(i));
|
|
}
|
|
return builder.toString();
|
|
}
|
|
|
|
}
|