package org.apache.solr.util;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
public class WebUtils {
// http://stackoverflow.com/questions/1667278/parsing-query-strings-in-java
public static Map<String, List<String>> getUrlParameters(String url)
throws UnsupportedEncodingException {
Map<String, List<String>> params = new HashMap<String, List<String>>();
String[] urlParts = url.split("\\?");
if (urlParts.length > 1) {
String query = urlParts[1];
return parseQuery(query);
}
return params;
}
public static Map<String, List<String>> parseQuery(String query)
throws UnsupportedEncodingException {
Map<String, List<String>> params = new HashMap<String, List<String>>();
// deal with encoded &
query = URLDecoder.decode(query, "UTF-8");
for (String param : query.split("&")) {
String pair[] = param.split("=");
String key = URLDecoder.decode(pair[0], "UTF-8");
String value = "";
if (pair.length > 1) {
value = URLDecoder.decode(pair[1], "UTF-8");
}
List<String> values = params.get(key);
if (values == null) {
values = new ArrayList<String>();
params.put(key, values);
}
values.add(value);
}
return params;
}
public static Map<String, String> parseQueryString(String encodedParams)
throws UnsupportedEncodingException {
final Map<String, String> qps = new HashMap<String, String>();
final StringTokenizer pairs = new StringTokenizer(encodedParams, "&");
while (pairs.hasMoreTokens()) {
final String pair = pairs.nextToken();
final StringTokenizer parts = new StringTokenizer(pair, "=");
final String key = URLDecoder.decode(parts.nextToken(), "UTF-8");
final String value = parts.hasMoreTokens() ? URLDecoder.decode(parts.nextToken(), "UTF-8") : "";
qps.put(key, value);
}
return qps;
}
}