mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-31 02:17:41 +00:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			b710070426
			...
			defa4d1469
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | defa4d1469 | ||
|  | 3545686a31 | 
| @ -37,7 +37,6 @@ import com.owncloud.android.lib.resources.status.RemoteServerInfo | ||||
| import org.apache.commons.lang3.exception.ExceptionUtils | ||||
| import timber.log.Timber | ||||
| import java.io.IOException | ||||
| import java.lang.Exception | ||||
| 
 | ||||
| /** | ||||
|  * ConnectionValidator | ||||
| @ -46,7 +45,7 @@ import java.lang.Exception | ||||
|  */ | ||||
| class ConnectionValidator( | ||||
|     val context: Context, | ||||
|     val clearCookiesOnValidation: Boolean | ||||
|     private val clearCookiesOnValidation: Boolean | ||||
| ) { | ||||
|     fun validate(baseClient: OwnCloudClient, singleSessionManager: SingleSessionManager, context: Context): Boolean { | ||||
|         try { | ||||
| @ -61,12 +60,12 @@ class ConnectionValidator( | ||||
|             client.account = baseClient.account | ||||
|             client.credentials = baseClient.credentials | ||||
|             while (validationRetryCount < VALIDATION_RETRY_COUNT) { | ||||
|                 Timber.d("validationRetryCout %d", validationRetryCount) | ||||
|                 Timber.d("validationRetryCount %d", validationRetryCount) | ||||
|                 var successCounter = 0 | ||||
|                 var failCounter = 0 | ||||
| 
 | ||||
|                 client.setFollowRedirects(true) | ||||
|                 if (isOnwCloudStatusOk(client)) { | ||||
|                 if (isOwnCloudStatusOk(client)) { | ||||
|                     successCounter++ | ||||
|                 } else { | ||||
|                     failCounter++ | ||||
| @ -103,7 +102,7 @@ class ConnectionValidator( | ||||
|         return false | ||||
|     } | ||||
| 
 | ||||
|     private fun isOnwCloudStatusOk(client: OwnCloudClient): Boolean { | ||||
|     private fun isOwnCloudStatusOk(client: OwnCloudClient): Boolean { | ||||
|         val reply = getOwnCloudStatus(client) | ||||
|         // dont check status code. It currently relais on the broken redirect code of the owncloud client | ||||
|         // TODO: Use okhttp redirect and add this check again | ||||
| @ -138,6 +137,12 @@ class ConnectionValidator( | ||||
|         // test if have all the needed to effectively invalidate ... | ||||
|         shouldInvalidateAccountCredentials = | ||||
|             shouldInvalidateAccountCredentials and (account.savedAccount != null) | ||||
|         Timber.d( | ||||
|             """Received error: $httpStatusCode, | ||||
|             account: ${account.name} | ||||
|             credentials are real: ${credentials !is OwnCloudAnonymousCredentials}, | ||||
|             so we need to invalidate credentials for account ${account.name} : $shouldInvalidateAccountCredentials""" | ||||
|         ) | ||||
|         return shouldInvalidateAccountCredentials | ||||
|     } | ||||
| 
 | ||||
| @ -150,6 +155,7 @@ class ConnectionValidator( | ||||
|      * | ||||
|      */ | ||||
|     private fun invalidateAccountCredentials(account: OwnCloudAccount, credentials: OwnCloudCredentials) { | ||||
|         Timber.i("Invalidating account credentials for account $account") | ||||
|         val am = AccountManager.get(context) | ||||
|         am.invalidateAuthToken( | ||||
|             account.savedAccount.type, | ||||
| @ -167,8 +173,6 @@ class ConnectionValidator( | ||||
|      * | ||||
|      * Refresh current credentials if possible, and marks a retry. | ||||
|      * | ||||
|      * @param status | ||||
|      * @param repeatCounter | ||||
|      * @return | ||||
|      */ | ||||
|     private fun checkUnauthorizedAccess(client: OwnCloudClient, singleSessionManager: SingleSessionManager, status: Int): Boolean { | ||||
| @ -181,6 +185,7 @@ class ConnectionValidator( | ||||
|             if (credentials.authTokenCanBeRefreshed()) { | ||||
|                 try { | ||||
|                     // This command does the actual refresh | ||||
|                     Timber.i("Trying to refresh auth token for account $account") | ||||
|                     account.loadCredentials(context) | ||||
|                     // if mAccount.getCredentials().length() == 0 --> refresh failed | ||||
|                     client.credentials = account.credentials | ||||
| @ -201,6 +206,7 @@ class ConnectionValidator( | ||||
|                 if (!credentialsWereRefreshed) { | ||||
|                     // if credentials are not refreshed, client must be removed | ||||
|                     // from the OwnCloudClientManager to prevent it is reused once and again | ||||
|                     Timber.w("Credentials were not refreshed, client will be removed from the Session Manager to prevent using it over and over") | ||||
|                     singleSessionManager.removeClientFor(account) | ||||
|                 } | ||||
|             } | ||||
| @ -210,6 +216,6 @@ class ConnectionValidator( | ||||
|     } | ||||
| 
 | ||||
|     companion object { | ||||
|         private val VALIDATION_RETRY_COUNT = 3 | ||||
|         private const val VALIDATION_RETRY_COUNT = 3 | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -112,6 +112,7 @@ public class AccountUtils { | ||||
|         String username = AccountUtils.getUsernameForAccount(account); | ||||
| 
 | ||||
|         if (isOauth2) { | ||||
|             Timber.i("Trying to retrieve credentials for oAuth account" + account.name); | ||||
|             String accessToken = am.blockingGetAuthToken( | ||||
|                     account, | ||||
|                     AccountTypeUtils.getAuthTokenTypeAccessToken(account.type), | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user