fix URL scheme colon parsing
This commit is contained in:
parent
f170147fc2
commit
3b86432303
3 changed files with 17 additions and 3 deletions
|
@ -1,5 +1,5 @@
|
|||
group = org.xbib
|
||||
name = net
|
||||
version = 3.3.1
|
||||
version = 3.3.2
|
||||
|
||||
org.gradle.warning.mode = ALL
|
||||
|
|
|
@ -72,14 +72,19 @@ public class URLParser {
|
|||
}
|
||||
|
||||
String parseScheme(URLBuilder builder, String input) {
|
||||
Pair<String, String> p = URL.indexOf(URL.COLON_CHAR, input);
|
||||
// there may be colons in query params, so
|
||||
// check if input contains query (question mark) and save query for later return
|
||||
int pos = input.indexOf(URL.QUESTION_CHAR);
|
||||
String string = pos > 0 ? input.substring(0, pos) : input;
|
||||
String query = pos > 0 ? input.substring(pos) : "";
|
||||
Pair<String, String> p = URL.indexOf(URL.COLON_CHAR, string);
|
||||
if (p.getValue() == null) {
|
||||
return input;
|
||||
}
|
||||
if (!URL.isNullOrEmpty(p.getKey())) {
|
||||
builder.scheme(p.getKey());
|
||||
}
|
||||
return p.getValue();
|
||||
return p.getValue() + query;
|
||||
}
|
||||
|
||||
String parseUserInfo(URLBuilder builder, String input)
|
||||
|
|
|
@ -486,6 +486,15 @@ class URLParserTest {
|
|||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void testUrlWithUnencodedUrlAsParam() {
|
||||
URL url = URL.from("/path?a=http://example.com");
|
||||
Parameter queryParameters = url.getQueryParams();
|
||||
// %EF%BF%B = 0xFFFD UNICODE REPLACEMENT CHARACTER
|
||||
assertEquals("/path", url.getPath());
|
||||
assertEquals("[a=http://example.com]", queryParameters.toString());
|
||||
}
|
||||
|
||||
private void assertUrlCompatibility(String url) throws Exception {
|
||||
String s = URL.from(url).toExternalForm();
|
||||
assertEquals(s, URL.from(s).toExternalForm());
|
||||
|
|
Loading…
Reference in a new issue