X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/1e7a75c042f6d8d83a1c44d0d3be69ff38563fef..cd165b7ce6fd0900c74d69df5e45f23117565f1b:/src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java diff --git a/src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java b/src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java index 26525a76..a25ade8b 100644 --- a/src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java +++ b/src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java @@ -1,3 +1,22 @@ +/** + * ownCloud Android client application + * + * @author masensio on 09/02/2015. + * Copyright (C) 2015 ownCloud Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ package com.owncloud.android.authentication; import android.app.Activity; @@ -5,12 +24,10 @@ import android.content.Context; import android.net.Uri; import android.os.AsyncTask; -import com.owncloud.android.MainApp; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientFactory; import com.owncloud.android.lib.common.OwnCloudCredentials; -import com.owncloud.android.lib.common.OwnCloudCredentialsFactory; -import com.owncloud.android.lib.common.accounts.AccountTypeUtils; +import com.owncloud.android.lib.common.network.RedirectionPath; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation; @@ -19,62 +36,48 @@ import java.lang.ref.WeakReference; /** * Async Task to verify the credentials of a user - * - * @author masensio on 09/02/2015. */ -public class AuthenticatorAsyncTask extends AsyncTask { - +public class AuthenticatorAsyncTask extends AsyncTask { private static String REMOTE_PATH = "/"; private static boolean SUCCESS_IF_ABSENT = false; private Context mContext; private final WeakReference mListener; + protected Activity mActivity; public AuthenticatorAsyncTask(Activity activity) { mContext = activity.getApplicationContext(); - mListener = new WeakReference<>((OnAuthenticatorTaskListener)activity); + mListener = new WeakReference((OnAuthenticatorTaskListener)activity); } @Override - protected RemoteOperationResult doInBackground(String... params) { + protected RemoteOperationResult doInBackground(Object... params) { RemoteOperationResult result; - if (params!= null && params.length==5) { - String url = params[0]; - String username = params[1]; - String password = params[2]; - String authToken = params[3]; - String authTokenType = params[4]; + if (params!= null && params.length==2) { + String url = (String)params[0]; + OwnCloudCredentials credentials = (OwnCloudCredentials)params[1]; // Client - String basic = AccountTypeUtils.getAuthTokenTypePass(MainApp.getAccountType()); - String oAuth = AccountTypeUtils.getAuthTokenTypeAccessToken(MainApp.getAccountType()); - String saml = AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()); - Uri uri = Uri.parse(url); - OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(uri, mContext, false); - OwnCloudCredentials credentials = null; - if (authTokenType.equals(basic)) { - credentials = OwnCloudCredentialsFactory.newBasicCredentials( - username, password); // basic - - } else if (authTokenType.equals(oAuth)) { - credentials = OwnCloudCredentialsFactory.newBearerCredentials( - authToken); // bearer token - - } else if (authTokenType.equals(saml)) { - credentials = OwnCloudCredentialsFactory.newSamlSsoCredentials( - authToken); // SAML SSO - } - + OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(uri, mContext, true); client.setCredentials(credentials); // Operation - ExistenceCheckRemoteOperation operation = new ExistenceCheckRemoteOperation(REMOTE_PATH, - mContext, SUCCESS_IF_ABSENT); + ExistenceCheckRemoteOperation operation = new ExistenceCheckRemoteOperation( + REMOTE_PATH, + mContext, + SUCCESS_IF_ABSENT + ); result = operation.execute(client); + if (operation.wasRedirected()) { + RedirectionPath redirectionPath = operation.getRedirectionPath(); + String permanentLocation = redirectionPath.getLastPermanentLocation(); + result.setLastPermanentLocation(permanentLocation); + } + } else { result = new RemoteOperationResult(RemoteOperationResult.ResultCode.UNKNOWN_ERROR); } @@ -94,7 +97,6 @@ public class AuthenticatorAsyncTask extends AsyncTask