From c87b9d73eaf66c88749ae69959de2b6994483569 Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Sun, 12 Oct 2025 21:17:12 +0200 Subject: feat: add authorize redirection --- .../moe/nea/prickly/util/QueryParameterHelper.java | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/main/java/moe/nea/prickly/util/QueryParameterHelper.java (limited to 'src/main/java/moe/nea/prickly/util/QueryParameterHelper.java') diff --git a/src/main/java/moe/nea/prickly/util/QueryParameterHelper.java b/src/main/java/moe/nea/prickly/util/QueryParameterHelper.java new file mode 100644 index 0000000..191dae8 --- /dev/null +++ b/src/main/java/moe/nea/prickly/util/QueryParameterHelper.java @@ -0,0 +1,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 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()); + } +} -- cgit