Skip to content

Commit 317045d

Browse files
committed
Auto-build collection/array query parameter
1 parent 44927b5 commit 317045d

1 file changed

Lines changed: 26 additions & 1 deletion

File tree

‎http/src/main/java/gg/eventalerts/sdk/http/endpoint/EAEndpoint.java‎

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.io.IOException;
1919
import java.io.InputStream;
2020
import java.io.InputStreamReader;
21+
import java.lang.reflect.Array;
2122
import java.net.HttpURLConnection;
2223
import java.net.URI;
2324
import java.net.URLEncoder;
@@ -183,7 +184,31 @@ protected ConnectionDetails openConnection(@NotNull String endpointPath, @NotNul
183184
for (final Map.Entry<String, Object> entry : queryParams.entrySet()) {
184185
if (!first) queryString.append("&");
185186
first = false;
186-
queryString.append(encode(entry.getKey())).append("=").append(encode(String.valueOf(entry.getValue())));
187+
188+
final StringBuilder builder = new StringBuilder(encode(entry.getKey()));
189+
final Object value = entry.getValue();
190+
if (value != null) {
191+
builder.append("=");
192+
193+
if (value instanceof Collection<?>) {
194+
// Collection
195+
final Collection<?> collection = (Collection<?>) value;
196+
if (!collection.isEmpty()) {
197+
for (final Object item : collection) builder.append(encode(String.valueOf(item))).append(",");
198+
builder.deleteCharAt(builder.length() - 1);
199+
}
200+
} else if (value.getClass().isArray()) {
201+
// Array
202+
final int length = Array.getLength(value);
203+
if (length > 0) {
204+
for (int i = 0; i < length; i++) builder.append(encode(String.valueOf(Array.get(value, i)))).append(",");
205+
builder.deleteCharAt(builder.length() - 1);
206+
}
207+
} else {
208+
builder.append(encode(String.valueOf(value)));
209+
}
210+
}
211+
queryString.append(builder);
187212
}
188213
}
189214

0 commit comments

Comments
 (0)