diff --git a/src/com/owncloud/android/lib/common/authentication/OwnCloudBasicCredentials.java b/src/com/owncloud/android/lib/common/authentication/OwnCloudBasicCredentials.java index ee0bf6bb..244d8520 100644 --- a/src/com/owncloud/android/lib/common/authentication/OwnCloudBasicCredentials.java +++ b/src/com/owncloud/android/lib/common/authentication/OwnCloudBasicCredentials.java @@ -25,6 +25,7 @@ package com.owncloud.android.lib.common.authentication; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.http.HttpClient; +import com.owncloud.android.lib.common.http.interceptors.BarearAuthInterceptor; import com.owncloud.android.lib.common.http.interceptors.BasicAuthInterceptor; import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor.RequestInterceptor; @@ -71,6 +72,9 @@ public class OwnCloudBasicCredentials implements OwnCloudCredentials { if (requestInterceptor instanceof BasicAuthInterceptor) { requestInterceptors.remove(requestInterceptor); } + if(requestInterceptor instanceof BarearAuthInterceptor) { + requestInterceptors.remove(requestInterceptor); + } } HttpClient.getOkHttpInterceptor() diff --git a/src/com/owncloud/android/lib/common/authentication/OwnCloudBearerCredentials.java b/src/com/owncloud/android/lib/common/authentication/OwnCloudBearerCredentials.java index 968d6703..1deb288b 100644 --- a/src/com/owncloud/android/lib/common/authentication/OwnCloudBearerCredentials.java +++ b/src/com/owncloud/android/lib/common/authentication/OwnCloudBearerCredentials.java @@ -23,6 +23,8 @@ */ package com.owncloud.android.lib.common.authentication; +import android.app.DownloadManager; + import java.util.ArrayList; import java.util.List; @@ -33,6 +35,10 @@ import org.apache.commons.httpclient.auth.AuthState; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.authentication.oauth.BearerAuthScheme; import com.owncloud.android.lib.common.authentication.oauth.BearerCredentials; +import com.owncloud.android.lib.common.http.HttpClient; +import com.owncloud.android.lib.common.http.interceptors.BarearAuthInterceptor; +import com.owncloud.android.lib.common.http.interceptors.BasicAuthInterceptor; +import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor; public class OwnCloudBearerCredentials implements OwnCloudCredentials { @@ -49,6 +55,22 @@ public class OwnCloudBearerCredentials implements OwnCloudCredentials { AuthPolicy.registerAuthScheme(BearerAuthScheme.AUTH_POLICY, BearerAuthScheme.class); AuthPolicy.registerAuthScheme(AuthState.PREEMPTIVE_AUTH_SCHEME, BearerAuthScheme.class); + final ArrayList requestInterceptors = + HttpClient.getOkHttpInterceptor().getRequestInterceptors(); + + // Clear previous basic credentials + for (HttpInterceptor.RequestInterceptor requestInterceptor : requestInterceptors) { + if (requestInterceptor instanceof BasicAuthInterceptor) { + requestInterceptors.remove(requestInterceptor); + } + if(requestInterceptor instanceof BarearAuthInterceptor) { + requestInterceptors.remove(requestInterceptor); + } + } + + HttpClient.getOkHttpInterceptor() + .addRequestInterceptor(new BarearAuthInterceptor(mAccessToken)); + List authPrefs = new ArrayList<>(1); authPrefs.add(BearerAuthScheme.AUTH_POLICY); client.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, authPrefs); diff --git a/src/com/owncloud/android/lib/common/http/interceptors/BarearAuthInterceptor.java b/src/com/owncloud/android/lib/common/http/interceptors/BarearAuthInterceptor.java new file mode 100644 index 00000000..4cf1f23d --- /dev/null +++ b/src/com/owncloud/android/lib/common/http/interceptors/BarearAuthInterceptor.java @@ -0,0 +1,21 @@ +package com.owncloud.android.lib.common.http.interceptors; + +import okhttp3.Request; + +public class BarearAuthInterceptor implements HttpInterceptor.RequestInterceptor { + + private static final String AUTHORIZATION_HEADER = "Authorization"; + private final String mBarearToken; + + public BarearAuthInterceptor(String barearToken) { + this.mBarearToken = barearToken; + } + + @Override + public Request intercept(Request request) { + return request + .newBuilder() + .addHeader(AUTHORIZATION_HEADER, "Bearer " + mBarearToken) + .build(); + } +} diff --git a/src/com/owncloud/android/lib/resources/files/ExistenceCheckRemoteOperation.java b/src/com/owncloud/android/lib/resources/files/ExistenceCheckRemoteOperation.java index e9dbfd5a..cbce3612 100644 --- a/src/com/owncloud/android/lib/resources/files/ExistenceCheckRemoteOperation.java +++ b/src/com/owncloud/android/lib/resources/files/ExistenceCheckRemoteOperation.java @@ -25,7 +25,6 @@ package com.owncloud.android.lib.resources.files; import com.owncloud.android.lib.common.OwnCloudClient; -import com.owncloud.android.lib.common.http.HttpClient; import com.owncloud.android.lib.common.http.HttpConstants; import com.owncloud.android.lib.common.http.HttpUtils; import com.owncloud.android.lib.common.http.methods.webdav.DavUtils; @@ -36,7 +35,6 @@ import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.utils.Log_OC; -import java.sql.Time; import java.util.concurrent.TimeUnit; import static com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode.OK; @@ -113,9 +111,9 @@ public class ExistenceCheckRemoteOperation extends RemoteOperation { * 207 MULTI_STATUS: path exists. */ - result = isSuccess(status) ? - new RemoteOperationResult(OK) : - new RemoteOperationResult(propfindMethod); + result = isSuccess(status) + ? new RemoteOperationResult(OK) + : new RemoteOperationResult(propfindMethod); Log_OC.d(TAG, "Existence check for " + client.getWebdavUri() + WebdavUtils.encodePath(mPath) + " targeting for " +