From 62d0153d5ae9dde98db1225dbd544d7387759c55 Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Wed, 16 Jul 2025 11:38:47 +0300 Subject: [PATCH 1/4] feat: network headers example --- app-java/src/main/java/ly/count/java/demo/Example.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app-java/src/main/java/ly/count/java/demo/Example.java b/app-java/src/main/java/ly/count/java/demo/Example.java index 831b8787..6516a6f0 100755 --- a/app-java/src/main/java/ly/count/java/demo/Example.java +++ b/app-java/src/main/java/ly/count/java/demo/Example.java @@ -210,9 +210,14 @@ public static void main(String[] args) throws Exception { } } + Map customNetworkRequestHeaders = new ConcurrentHashMap<>(); + customNetworkRequestHeaders.put("X-Countly-Example", "true"); + customNetworkRequestHeaders.put("X-Countly-Example-Version", "1.0"); + Config config = new Config(COUNTLY_SERVER_URL, COUNTLY_APP_KEY, sdkStorageRootDirectory) .setLoggingLevel(Config.LoggingLevel.DEBUG) .setDeviceIdStrategy(Config.DeviceIdStrategy.UUID) + .addCustomNetworkRequestHeaders(customNetworkRequestHeaders) .enableFeatures(Config.Feature.Events, Config.Feature.Sessions, Config.Feature.CrashReporting, Config.Feature.Views, Config.Feature.UserProfiles, Config.Feature.Location, Config.Feature.Feedback) .setRequiresConsent(true) //.enableParameterTamperingProtection("test-salt-checksum") From d2e90620732e5cc85c271644c4bfd88b17971a35 Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Wed, 16 Jul 2025 11:38:59 +0300 Subject: [PATCH 2/4] feat: network headers config entry --- .../main/java/ly/count/sdk/java/Config.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/sdk-java/src/main/java/ly/count/sdk/java/Config.java b/sdk-java/src/main/java/ly/count/sdk/java/Config.java index c29d6037..36f0feae 100644 --- a/sdk-java/src/main/java/ly/count/sdk/java/Config.java +++ b/sdk-java/src/main/java/ly/count/sdk/java/Config.java @@ -230,6 +230,12 @@ public class Config { */ protected boolean unhandledCrashReportingEnabled = true; + /** + * Custom network request headers to be sent with each request. + * If you want to add a header, use {@link #addCustomNetworkRequestHeaders(Map)}. + */ + protected Map customNetworkRequestHeaders = null; + public ConfigViews views = new ConfigViews(this); protected String location = null; @@ -1330,6 +1336,20 @@ public Config disableLocation() { return this; } + /** + * Allows you to add custom header key/value pairs to each request + * + * @return Returns the same config object for convenient linking + */ + public Config addCustomNetworkRequestHeaders(Map customHeaderValues) { + this.customNetworkRequestHeaders = customHeaderValues; + return this; + } + + public Map getCustomNetworkRequestHeaders() { + return customNetworkRequestHeaders; + } + /** * Logging level for {@link Log} module */ From aa326cb910fece5674445dcb23196a4029468cbe Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Wed, 16 Jul 2025 11:39:08 +0300 Subject: [PATCH 3/4] feat: network headers impl --- .../java/ly/count/sdk/java/internal/Transport.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sdk-java/src/main/java/ly/count/sdk/java/internal/Transport.java b/sdk-java/src/main/java/ly/count/sdk/java/internal/Transport.java index c158e4fb..b016a4c1 100644 --- a/sdk-java/src/main/java/ly/count/sdk/java/internal/Transport.java +++ b/sdk-java/src/main/java/ly/count/sdk/java/internal/Transport.java @@ -149,6 +149,18 @@ HttpURLConnection connection(final Request request) throws IOException { https.setSSLSocketFactory(sslContext.getSocketFactory()); } + if (config.getCustomNetworkRequestHeaders() != null) { + //if there are custom header values, add them + L.v("[Transport] connection, Adding [" + config.getCustomNetworkRequestHeaders() + "] custom header fields"); + for (Map.Entry entry : config.getCustomNetworkRequestHeaders().entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + if (key != null && value != null && !key.isEmpty()) { + connection.addRequestProperty(key, value); + } + } + } + if (!usingGET) { OutputStream output = null; PrintWriter writer = null; From 58265886ec0d6b1eb672e052c3f3b500ac8a6711 Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Wed, 16 Jul 2025 11:45:01 +0300 Subject: [PATCH 4/4] feat: new minor --- .idea/modules/sdk-java/countly-sdk-java.sdk-java.iml | 2 +- .idea/modules/sdk-java/countly-sdk-java.sdk-java.main.iml | 2 +- .idea/modules/sdk-java/countly-sdk-java.sdk-java.test.iml | 2 +- CHANGELOG.md | 4 ++++ build.gradle | 2 +- gradle.properties | 2 +- sdk-java/src/main/java/ly/count/sdk/java/Config.java | 2 +- .../src/test/java/ly/count/sdk/java/internal/TestUtils.java | 2 +- 8 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.idea/modules/sdk-java/countly-sdk-java.sdk-java.iml b/.idea/modules/sdk-java/countly-sdk-java.sdk-java.iml index cd854dd0..3a892994 100644 --- a/.idea/modules/sdk-java/countly-sdk-java.sdk-java.iml +++ b/.idea/modules/sdk-java/countly-sdk-java.sdk-java.iml @@ -1,5 +1,5 @@ - + diff --git a/.idea/modules/sdk-java/countly-sdk-java.sdk-java.main.iml b/.idea/modules/sdk-java/countly-sdk-java.sdk-java.main.iml index e0acadea..cad25711 100644 --- a/.idea/modules/sdk-java/countly-sdk-java.sdk-java.main.iml +++ b/.idea/modules/sdk-java/countly-sdk-java.sdk-java.main.iml @@ -1,5 +1,5 @@ - + diff --git a/.idea/modules/sdk-java/countly-sdk-java.sdk-java.test.iml b/.idea/modules/sdk-java/countly-sdk-java.sdk-java.test.iml index fef2e76f..353a4878 100644 --- a/.idea/modules/sdk-java/countly-sdk-java.sdk-java.test.iml +++ b/.idea/modules/sdk-java/countly-sdk-java.sdk-java.test.iml @@ -1,5 +1,5 @@ - + diff --git a/CHANGELOG.md b/CHANGELOG.md index af507a36..1b98b56a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 24.1.2 + +* Added e new configuration function "addCustomNetworkRequestHeaders(Map)" to add custom request headers to each request. + ## 24.1.1 * Added a new function "setID(newDeviceId)" for managing device id changes according to the device ID Type. diff --git a/build.gradle b/build.gradle index 836bacca..ba448809 100644 --- a/build.gradle +++ b/build.gradle @@ -20,7 +20,7 @@ buildscript { } allprojects { - ext.CLY_VERSION = "24.1.1" + ext.CLY_VERSION = "24.1.2" ext.POWERMOCK_VERSION = "1.7.4" tasks.withType(Javadoc) { diff --git a/gradle.properties b/gradle.properties index ea49db4c..72dc63d0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,7 +18,7 @@ # org.gradle.parallel=true # RELEASE FIELD SECTION -VERSION_NAME=24.1.1 +VERSION_NAME=24.1.2 GROUP=ly.count.sdk POM_URL=https://github.com/Countly/countly-sdk-java diff --git a/sdk-java/src/main/java/ly/count/sdk/java/Config.java b/sdk-java/src/main/java/ly/count/sdk/java/Config.java index 36f0feae..e94ef032 100644 --- a/sdk-java/src/main/java/ly/count/sdk/java/Config.java +++ b/sdk-java/src/main/java/ly/count/sdk/java/Config.java @@ -68,7 +68,7 @@ public class Config { /** * Countly SDK version to be sent in HTTP requests */ - protected String sdkVersion = "24.1.1"; + protected String sdkVersion = "24.1.2"; /** * Countly SDK version to be sent in HTTP requests diff --git a/sdk-java/src/test/java/ly/count/sdk/java/internal/TestUtils.java b/sdk-java/src/test/java/ly/count/sdk/java/internal/TestUtils.java index b87d3140..91576583 100644 --- a/sdk-java/src/test/java/ly/count/sdk/java/internal/TestUtils.java +++ b/sdk-java/src/test/java/ly/count/sdk/java/internal/TestUtils.java @@ -39,7 +39,7 @@ public class TestUtils { static String SERVER_APP_KEY = "COUNTLY_APP_KEY"; static String DEVICE_ID = "some_random_test_device_id"; static String SDK_NAME = "java-native"; - static String SDK_VERSION = "24.1.1"; + static String SDK_VERSION = "24.1.2"; static String APPLICATION_VERSION = "1.0"; public static final String[] eKeys = new String[] { "eventKey1", "eventKey2", "eventKey3", "eventKey4", "eventKey5", "eventKey6", "eventKey7" };