package com.justeat.mickeydb.util;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;
import android.net.Uri;
public class Uris {
public static Set<String> getQueryParameterNames(Uri uri) {
if (uri.isOpaque()) {
throw new UnsupportedOperationException("This isn't a hierarchical URI.");
}
String query = uri.getEncodedQuery();
if (query == null) {
return Collections.emptySet();
}
Set<String> names = new LinkedHashSet<String>();
int start = 0;
do {
int next = query.indexOf('&', start);
int end = (next == -1) ? query.length() : next;
int separator = query.indexOf('=', start);
if (separator > end || separator == -1) {
separator = end;
}
String name = query.substring(start, separator);
names.add(Uri.decode(name));
// Move start to end of name.
start = end + 1;
} while (start < query.length());
return Collections.unmodifiableSet(names);
}
public static String getStringQueryParamOrDefault(Uri uri, Set<String> keys, String key) {
if(keys.contains(key)) {
return uri.getQueryParameter(key);
}
return null;
}
public static boolean getBooleanQueryParamOrDefault(Uri uri, Set<String> keys, String key) {
if(keys.contains(key)) {
return uri.getBooleanQueryParameter(key, false);
}
return false;
}
public static int getIntQueryParamOrDefault(Uri uri, Set<String> keys, String key) {
if(keys.contains(key)) {
return Integer.parseInt(uri.getQueryParameter(key));
}
return 0;
}
public static double getDoubleQueryParamOrDefault(Uri uri, Set<String> keys, String key) {
if(keys.contains(key)) {
return Double.parseDouble(uri.getQueryParameter(key));
}
return 0;
}
public static String getPathAndQueryAsString(Uri uri) {
return uri.getPath() + (uri.getQuery() == null ? "" : "?" + uri.getQuery());
}
}