diff --git a/src/main/java/com/nextcloud/common/OkHttpCredentialsUtil.kt b/src/main/java/com/nextcloud/common/OkHttpCredentialsUtil.kt new file mode 100644 index 000000000..fb2c84fb0 --- /dev/null +++ b/src/main/java/com/nextcloud/common/OkHttpCredentialsUtil.kt @@ -0,0 +1,43 @@ +/* + * Nextcloud Android Library is available under MIT license + * + * @author Álvaro Brey Vilas + * Copyright (C) 2021 Álvaro Brey Vilas + * Copyright (C) 2021 Nextcloud GmbH + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.nextcloud.common + +import android.os.Build +import okhttp3.Credentials +import java.nio.charset.StandardCharsets + +object OkHttpCredentialsUtil { + /** + * Builds basic OKHttp credentials string, using UTF_8 if available + */ + @JvmStatic + fun basic(username: String, password: String): String = when { + Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT -> + Credentials.basic(username, password, StandardCharsets.UTF_8) + else -> Credentials.basic(username, password) + } +} diff --git a/src/main/java/com/owncloud/android/lib/common/OwnCloudAnonymousCredentials.java b/src/main/java/com/owncloud/android/lib/common/OwnCloudAnonymousCredentials.java index af0e2a910..e7a0bd925 100644 --- a/src/main/java/com/owncloud/android/lib/common/OwnCloudAnonymousCredentials.java +++ b/src/main/java/com/owncloud/android/lib/common/OwnCloudAnonymousCredentials.java @@ -2,7 +2,7 @@ import android.os.Parcel; -import okhttp3.Credentials; +import com.nextcloud.common.OkHttpCredentialsUtil; public class OwnCloudAnonymousCredentials implements OwnCloudCredentials { @@ -27,7 +27,7 @@ public boolean authTokenExpires() { @Override public String toOkHttpCredentials() { - return Credentials.basic(getUsername(), getAuthToken()); + return OkHttpCredentialsUtil.basic(getUsername(), getAuthToken()); } @Override diff --git a/src/main/java/com/owncloud/android/lib/common/OwnCloudBasicCredentials.java b/src/main/java/com/owncloud/android/lib/common/OwnCloudBasicCredentials.java index e404a2f1c..61fb4dad2 100644 --- a/src/main/java/com/owncloud/android/lib/common/OwnCloudBasicCredentials.java +++ b/src/main/java/com/owncloud/android/lib/common/OwnCloudBasicCredentials.java @@ -25,6 +25,8 @@ import android.os.Parcel; +import com.nextcloud.common.OkHttpCredentialsUtil; + import org.apache.commons.httpclient.UsernamePasswordCredentials; import org.apache.commons.httpclient.auth.AuthPolicy; import org.apache.commons.httpclient.auth.AuthScope; @@ -34,7 +36,6 @@ import lombok.EqualsAndHashCode; import lombok.Getter; -import okhttp3.Credentials; @EqualsAndHashCode public class OwnCloudBasicCredentials implements OwnCloudCredentials { @@ -73,7 +74,7 @@ public boolean authTokenExpires() { @Override public String toOkHttpCredentials() { - return Credentials.basic(username, authToken); + return OkHttpCredentialsUtil.basic(username, authToken); } diff --git a/src/main/java/com/owncloud/android/lib/common/OwnCloudClientFactory.java b/src/main/java/com/owncloud/android/lib/common/OwnCloudClientFactory.java index 0a100dffe..7d31defab 100644 --- a/src/main/java/com/owncloud/android/lib/common/OwnCloudClientFactory.java +++ b/src/main/java/com/owncloud/android/lib/common/OwnCloudClientFactory.java @@ -40,12 +40,11 @@ import com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException; import com.owncloud.android.lib.common.network.NetworkUtils; import com.owncloud.android.lib.common.utils.Log_OC; +import com.nextcloud.common.OkHttpCredentialsUtil; import java.io.IOException; import java.security.GeneralSecurityException; -import okhttp3.Credentials; - public class OwnCloudClientFactory { final private static String TAG = OwnCloudClientFactory.class.getSimpleName(); @@ -220,9 +219,9 @@ public static NextcloudClient createNextcloudClient(Account account, Context app // AccountUtils.restoreCookies(account, client, appContext); return createNextcloudClient(baseUri, - userId, - Credentials.basic(username, password), - appContext, - true); + userId, + OkHttpCredentialsUtil.basic(username, password), + appContext, + true); } }