From a72bb20cf3e660c7a37529d7493aa6ae2eddf16c Mon Sep 17 00:00:00 2001 From: Adam Schlesinger Date: Wed, 3 Nov 2021 10:50:47 -0400 Subject: [PATCH] Match and fix any external id that has escaped forward slashes --- .../java/com/onesignal/OneSignalRestClient.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignalRestClient.java b/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignalRestClient.java index faacc2c57b..0cc625053d 100644 --- a/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignalRestClient.java +++ b/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignalRestClient.java @@ -40,6 +40,8 @@ import java.net.HttpURLConnection; import java.net.URL; import java.util.Scanner; +import java.util.regex.Matcher; +import java.util.regex.Pattern; class OneSignalRestClient { static abstract class ResponseHandler { @@ -158,6 +160,18 @@ private static Thread startHTTPConnection(String url, String method, JSONObject if (jsonBody != null) { String strJsonBody = jsonBody.toString(); + + Pattern eidPattern = Pattern.compile("(?<=\"external_user_id\":\").*\\\\/.*?(?=\",|\"\\})"); + Matcher eidMatcher = eidPattern.matcher(strJsonBody); + + if (eidMatcher.find()) { + String matched = eidMatcher.group(0); + if (matched != null) { + String unescapedEID = matched.replace("\\/", "/"); + strJsonBody = eidMatcher.replaceAll(unescapedEID); + } + } + OneSignal.Log(OneSignal.LOG_LEVEL.DEBUG, "OneSignalRestClient: " + method + " SEND JSON: " + strJsonBody); byte[] sendBytes = strJsonBody.getBytes("UTF-8");