From 7222ca07d74a87f8e6db236d3f57f431df4de82d Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Fri, 8 Nov 2019 13:32:35 +0700 Subject: [PATCH] fix(android): Sanitize version for API query Fixes #2298 Sanitize the app version to `#.#.#` to match the API query spec --- .../com/tavultesoft/kmea/data/CloudRepository.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudRepository.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudRepository.java index c4dc76bb8d..dcd81e5e42 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudRepository.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/CloudRepository.java @@ -28,6 +28,8 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; +import java.util.regex.Pattern; +import java.util.regex.Matcher; public class CloudRepository { static public final CloudRepository shared = new CloudRepository(); @@ -123,9 +125,18 @@ public class CloudRepository { { String deviceType = CloudDataJsonUtil.getDeviceTypeForCloudQuery(aContext); + // Sanitize appVersion to #.#.# to match the API spec + // Regex needs to match the entire string + String appVersion = BuildConfig.VERSION_NAME; + Pattern pattern = Pattern.compile("(\\d+\\.\\d+\\.\\d+).*"); + Matcher matcher = pattern.matcher(appVersion); + if (matcher.matches() && matcher.groupCount() >= 1) { + appVersion = matcher.group(1); + } + // Retrieves the cloud-based keyboard catalog in Android's preferred format. String keyboardURL = String.format("%s?version=%s&device=%s&languageidtype=bcp47", - KMKeyboardDownloaderActivity.kKeymanApiBaseURL, BuildConfig.VERSION_NAME, deviceType); + KMKeyboardDownloaderActivity.kKeymanApiBaseURL, appVersion, deviceType); //cloudQueries[cloudQueryEntries++] = new CloudApiParam(ApiTarget.Keyboards, keyboardURL, JSONType.Object); return new CloudApiTypes.CloudApiParam(