/* (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 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()); } }