From d9a902bfd788b06073dcef525d51f76b4b237684 Mon Sep 17 00:00:00 2001 From: eczmustafa Date: Sun, 10 Jul 2022 14:24:39 +0300 Subject: [PATCH] Set English locale for toLowerCase methods to fix #573 dotless i problem --- .../.settings/org.eclipse.buildship.core.prefs | 2 +- .../java/com/RNFetchBlob/RNFetchBlobReq.java | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/android/.settings/org.eclipse.buildship.core.prefs b/android/.settings/org.eclipse.buildship.core.prefs index 98515123a..2b6d83b97 100644 --- a/android/.settings/org.eclipse.buildship.core.prefs +++ b/android/.settings/org.eclipse.buildship.core.prefs @@ -5,7 +5,7 @@ connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) connection.project.dir= eclipse.preferences.version=1 gradle.user.home= -java.home=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home +java.home=/usr/lib/jvm/java-11-openjdk-amd64 jvm.arguments= offline.mode=false override.workspace.settings=true diff --git a/android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java b/android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java index 55fb15c4c..6e453cc61 100644 --- a/android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java +++ b/android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java @@ -49,6 +49,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; import java.util.HashMap; import java.util.concurrent.TimeUnit; @@ -115,6 +116,7 @@ enum ResponseFormat { boolean timeout = false; ArrayList redirects = new ArrayList<>(); OkHttpClient client; + Locale httpHeaderLocale = Locale.ENGLISH; public RNFetchBlobReq(ReadableMap options, String taskId, String method, String url, ReadableMap headers, String body, ReadableArray arrayBody, OkHttpClient client, final Callback callback) { this.method = method.toUpperCase(); @@ -300,14 +302,14 @@ else if (value.equalsIgnoreCase("utf8")) responseFormat = ResponseFormat.UTF8; } else { - builder.header(key.toLowerCase(), value); - mheaders.put(key.toLowerCase(), value); + builder.header(key.toLowerCase(httpHeaderLocale), value); + mheaders.put(key.toLowerCase(httpHeaderLocale), value); } } } if(method.equalsIgnoreCase("post") || method.equalsIgnoreCase("put") || method.equalsIgnoreCase("patch")) { - String cType = getHeaderIgnoreCases(mheaders, "Content-Type").toLowerCase(); + String cType = getHeaderIgnoreCases(mheaders, "Content-Type").toLowerCase(httpHeaderLocale); if(rawRequestBodyArray != null) { requestType = RequestType.Form; @@ -323,7 +325,7 @@ else if(cType.isEmpty()) { || rawRequestBody.startsWith(RNFetchBlobConst.CONTENT_PREFIX)) { requestType = RequestType.SingleFile; } - else if (cType.toLowerCase().contains(";base64") || cType.toLowerCase().startsWith("application/octet")) { + else if (cType.toLowerCase().contains(";base64") || cType.toLowerCase(httpHeaderLocale).startsWith("application/octet")) { cType = cType.replace(";base64","").replace(";BASE64",""); if(mheaders.containsKey("content-type")) mheaders.put("content-type", cType); @@ -717,7 +719,7 @@ private boolean isBlobResponse(Response resp) { boolean isCustomBinary = false; if(options.binaryContentTypes != null) { for(int i = 0; i< options.binaryContentTypes.size();i++) { - if(ctype.toLowerCase().contains(options.binaryContentTypes.getString(i).toLowerCase())) { + if(ctype.toLowerCase(httpHeaderLocale).contains(options.binaryContentTypes.getString(i).toLowerCase())) { isCustomBinary = true; break; } @@ -729,13 +731,13 @@ private boolean isBlobResponse(Response resp) { private String getHeaderIgnoreCases(Headers headers, String field) { String val = headers.get(field); if(val != null) return val; - return headers.get(field.toLowerCase()) == null ? "" : headers.get(field.toLowerCase()); + return headers.get(field.toLowerCase(httpHeaderLocale)) == null ? "" : headers.get(field.toLowerCase(Locale.English)); } private String getHeaderIgnoreCases(HashMap headers, String field) { String val = headers.get(field); if(val != null) return val; - String lowerCasedValue = headers.get(field.toLowerCase()); + String lowerCasedValue = headers.get(field.toLowerCase(httpHeaderLocale)); return lowerCasedValue == null ? "" : lowerCasedValue; }