Added append parameters to URL method
This commit is contained in:
1 parent
6fc5146706
commit
27bac50073
2 files changed
+67
-2
No files matched your search
@@ -7,8 +7,8 @@ import java.util.*;
|
|||||||
import org.scribe.exceptions.*;
|
import org.scribe.exceptions.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utils to deal with URL and url-encodings
|
* Utils to deal with URL and url-encodings
|
||||||
*
|
*
|
||||||
* @author Pablo Fernandez
|
* @author Pablo Fernandez
|
||||||
*/
|
*/
|
||||||
public class URLUtils
|
public class URLUtils
|
||||||
@@ -17,6 +17,7 @@ public class URLUtils
|
|||||||
private static final String UTF_8 = "UTF-8";
|
private static final String UTF_8 = "UTF-8";
|
||||||
private static final char PAIR_SEPARATOR = '=';
|
private static final char PAIR_SEPARATOR = '=';
|
||||||
private static final char PARAM_SEPARATOR = '&';
|
private static final char PARAM_SEPARATOR = '&';
|
||||||
|
private static final char QUERY_STRING_SEPARATOR = '?';
|
||||||
|
|
||||||
private static final String ERROR_MSG = String.format("Cannot find specified encoding: %s", UTF_8);
|
private static final String ERROR_MSG = String.format("Cannot find specified encoding: %s", UTF_8);
|
||||||
|
|
||||||
@@ -100,6 +101,25 @@ public class URLUtils
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append given parameters to the query string of the url
|
||||||
|
*
|
||||||
|
* @param url the url to append parameters to
|
||||||
|
* @param params any map
|
||||||
|
* @return new url with parameters on query string
|
||||||
|
*/
|
||||||
|
public static String appendParametersToQueryString(String url, Map<String, String> params)
|
||||||
|
{
|
||||||
|
Preconditions.checkNotNull(url, "Cannot append to null URL");
|
||||||
|
String queryString = URLUtils.formURLEncodeMap(params);
|
||||||
|
if (queryString.isEmpty()) return url;
|
||||||
|
|
||||||
|
// Check if there are parameters in the url already and use '&' instead of '?'
|
||||||
|
url += url.indexOf(QUERY_STRING_SEPARATOR) != -1 ? PARAM_SEPARATOR : QUERY_STRING_SEPARATOR;
|
||||||
|
url += queryString;
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
private static final class EncodingRule
|
private static final class EncodingRule
|
||||||
{
|
{
|
||||||
private final String ch;
|
private final String ch;
|
||||||
|
|||||||
@@ -82,4 +82,49 @@ public class URLUtilsTest
|
|||||||
URLUtils.percentDecode(toDecode);
|
URLUtils.percentDecode(toDecode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(expected = IllegalArgumentException.class)
|
||||||
|
public void shouldThrowExceptionWhenAppendingNullMapToQuerystring()
|
||||||
|
{
|
||||||
|
String url = "http://www.example.com";
|
||||||
|
Map<String, String> nullMap = null;
|
||||||
|
URLUtils.appendParametersToQueryString(url, nullMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldAppendNothingToQuerystringIfGivenEmptyMap()
|
||||||
|
{
|
||||||
|
String url = "http://www.example.com";
|
||||||
|
Map<String, String> emptyMap = new HashMap<String, String>();
|
||||||
|
String newUrl = URLUtils.appendParametersToQueryString(url, emptyMap);
|
||||||
|
Assert.assertEquals(url, newUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldAppendParametersToSimpleUrl()
|
||||||
|
{
|
||||||
|
String url = "http://www.example.com";
|
||||||
|
String expectedUrl = "http://www.example.com?param1=value1¶m2=value%20with%20spaces";
|
||||||
|
|
||||||
|
Map<String, String> params = new HashMap<String, String>();
|
||||||
|
params.put("param1", "value1");
|
||||||
|
params.put("param2", "value with spaces");
|
||||||
|
|
||||||
|
url = URLUtils.appendParametersToQueryString(url, params);
|
||||||
|
Assert.assertEquals(url, expectedUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldAppendParametersToUrlWithQuerystring()
|
||||||
|
{
|
||||||
|
String url = "http://www.example.com?already=present";
|
||||||
|
String expectedUrl = "http://www.example.com?already=present¶m1=value1¶m2=value%20with%20spaces";
|
||||||
|
|
||||||
|
Map<String, String> params = new HashMap<String, String>();
|
||||||
|
params.put("param1", "value1");
|
||||||
|
params.put("param2", "value with spaces");
|
||||||
|
|
||||||
|
url = URLUtils.appendParametersToQueryString(url, params);
|
||||||
|
Assert.assertEquals(url, expectedUrl);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user