From a8a0cba646e1060d0566f3368a6b49ae7e45881b Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Mon, 19 Jan 2026 21:20:26 +0100 Subject: [PATCH 1/2] [CHA-1558] support ext custom header --- .../java/services/framework/DefaultClient.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/io/getstream/chat/java/services/framework/DefaultClient.java b/src/main/java/io/getstream/chat/java/services/framework/DefaultClient.java index a5e82ea4..632c4be7 100644 --- a/src/main/java/io/getstream/chat/java/services/framework/DefaultClient.java +++ b/src/main/java/io/getstream/chat/java/services/framework/DefaultClient.java @@ -32,6 +32,7 @@ public class DefaultClient implements Client { public static final String API_SECRET_PROP_NAME = "io.getstream.chat.apiSecret"; public static final String API_TIMEOUT_PROP_NAME = "io.getstream.chat.timeout"; public static final String API_URL_PROP_NAME = "io.getstream.chat.url"; + public static final String X_STREAM_EXT_PROP_NAME = "io.getstream.chat.xStreamExt"; private static final String API_DEFAULT_URL = "https://chat.stream-io-api.com"; private static volatile DefaultClient defaultInstance; @@ -121,6 +122,12 @@ private OkHttpClient buildOkHttpClient() { .header("X-Stream-Client", "stream-java-client-" + sdkVersion) .header("Stream-Auth-Type", "jwt"); + // Add x-stream-ext header if configured + String xStreamExt = getXStreamExt(extendedProperties); + if (xStreamExt != null && !xStreamExt.isEmpty()) { + builder.header("X-Stream-Ext", xStreamExt); + } + if (userToken != null) { // User token present - use user auth builder.header("Authorization", userToken.value()); @@ -231,6 +238,12 @@ private static Properties extendProperties(Properties properties) { canformedProperties.put(API_URL_PROP_NAME, envApiUrl); } + var envXStreamExt = + env.getOrDefault("STREAM_CHAT_X_STREAM_EXT", System.getProperty("STREAM_CHAT_X_STREAM_EXT")); + if (envXStreamExt != null) { + canformedProperties.put(X_STREAM_EXT_PROP_NAME, envXStreamExt); + } + canformedProperties.putAll(System.getProperties()); canformedProperties.putAll(properties); return canformedProperties; @@ -246,6 +259,11 @@ private static String getStreamChatBaseUrl(@NotNull Properties properties) { return url.toString(); } + private static String getXStreamExt(@NotNull Properties properties) { + var xStreamExt = properties.get(X_STREAM_EXT_PROP_NAME); + return xStreamExt != null ? xStreamExt.toString() : null; + } + private static final @NotNull String sdkVersion = getSdkVersion(); private static @NotNull String getSdkVersion() { From c70126569c7680ebe8e0ec37233229128c941b09 Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Tue, 20 Jan 2026 09:24:48 +0100 Subject: [PATCH 2/2] fix format --- .../getstream/chat/java/services/framework/DefaultClient.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/getstream/chat/java/services/framework/DefaultClient.java b/src/main/java/io/getstream/chat/java/services/framework/DefaultClient.java index 632c4be7..1bc1ff14 100644 --- a/src/main/java/io/getstream/chat/java/services/framework/DefaultClient.java +++ b/src/main/java/io/getstream/chat/java/services/framework/DefaultClient.java @@ -239,7 +239,8 @@ private static Properties extendProperties(Properties properties) { } var envXStreamExt = - env.getOrDefault("STREAM_CHAT_X_STREAM_EXT", System.getProperty("STREAM_CHAT_X_STREAM_EXT")); + env.getOrDefault( + "STREAM_CHAT_X_STREAM_EXT", System.getProperty("STREAM_CHAT_X_STREAM_EXT")); if (envXStreamExt != null) { canformedProperties.put(X_STREAM_EXT_PROP_NAME, envXStreamExt); }