blob: 191dae8c4b7db53d597bf0372f80bff3f6317019 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
/* (C) 2025 Linnea Gräf - Licensed to everyone under the BSD 3 Clause License */
package moe.nea.prickly.util;
import com.google.common.net.UrlEscapers;
import java.net.URI;
import java.util.Map;
import org.jspecify.annotations.Nullable;
public class QueryParameterHelper {
public static URI appendQuery(URI uri, Map<String, @Nullable String> extraArgs) {
var uriBuilder = new StringBuilder();
uriBuilder.append(uri);
var escaper = UrlEscapers.urlFormParameterEscaper();
var first = true;
for (var entry : extraArgs.entrySet()) {
if (entry.getValue() == null) continue;
if (first) {
char c = uriBuilder.charAt(uriBuilder.length() - 1);
if (c != '?' && c != '&') uriBuilder.append((uri.getQuery() == null) ? '?' : '&');
first = false;
} else {
uriBuilder.append('&');
}
uriBuilder.append(escaper.escape(entry.getKey())).append('=').append(escaper.escape(entry.getValue()));
}
return URI.create(uriBuilder.toString());
}
}
|