mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-30 18:07:38 +00:00 
			
		
		
		
	add fix for redirect, untested
This commit is contained in:
		
							parent
							
								
									8da24c5076
								
							
						
					
					
						commit
						9553de2786
					
				| @ -53,7 +53,8 @@ class GetRemoteStatusOperation : RemoteOperation<OwnCloudVersion>() { | ||||
|         val baseUriStr = client.baseUri.toString() | ||||
|         if (baseUriStr.startsWith(HTTP_PREFIX) || baseUriStr.startsWith( | ||||
|                 HTTPS_PREFIX | ||||
|             )) { | ||||
|             ) | ||||
|         ) { | ||||
|             tryConnection(client) | ||||
|         } else { | ||||
|             client.baseUri = Uri.parse(HTTPS_PREFIX + baseUriStr) | ||||
| @ -67,11 +68,18 @@ class GetRemoteStatusOperation : RemoteOperation<OwnCloudVersion>() { | ||||
|         return latestResult | ||||
|     } | ||||
| 
 | ||||
|     private fun updateLocationWithRelativePath(oldLocation: String, redirectedLocation: String): String { | ||||
|         if(!redirectedLocation.startsWith("/")) | ||||
|             return redirectedLocation | ||||
|         val oldLocation = URL(oldLocation) | ||||
|         return URL(oldLocation.protocol, oldLocation.host, oldLocation.port, redirectedLocation).toString() | ||||
|     } | ||||
| 
 | ||||
|     private fun tryConnection(client: OwnCloudClient): Boolean { | ||||
|         var successfulConnection = false | ||||
|         val baseUrlSt = client.baseUri.toString() | ||||
|         val baseUrlStr = client.baseUri.toString() | ||||
|         try { | ||||
|             var getMethod = GetMethod(URL(baseUrlSt + OwnCloudClient.STATUS_PATH)).apply { | ||||
|             var getMethod = GetMethod(URL(baseUrlStr + OwnCloudClient.STATUS_PATH)).apply { | ||||
|                 setReadTimeout(TRY_CONNECTION_TIMEOUT, TimeUnit.SECONDS) | ||||
|                 setConnectionTimeout(TRY_CONNECTION_TIMEOUT, TimeUnit.SECONDS) | ||||
|             } | ||||
| @ -89,11 +97,11 @@ class GetRemoteStatusOperation : RemoteOperation<OwnCloudVersion>() { | ||||
|                 return successfulConnection | ||||
|             } | ||||
| 
 | ||||
|             var redirectedLocation = latestResult.redirectedLocation | ||||
|             var redirectedLocation = updateLocationWithRelativePath(baseUrlStr, latestResult.redirectedLocation) | ||||
|             while (!redirectedLocation.isNullOrEmpty() && !latestResult.isSuccess) { | ||||
|                 isRedirectToNonSecureConnection = | ||||
|                     isRedirectToNonSecureConnection || | ||||
|                             (baseUrlSt.startsWith(HTTPS_PREFIX) && redirectedLocation.startsWith( | ||||
|                             (baseUrlStr.startsWith(HTTPS_PREFIX) && redirectedLocation.startsWith( | ||||
|                                 HTTP_PREFIX | ||||
|                             )) | ||||
| 
 | ||||
| @ -104,7 +112,7 @@ class GetRemoteStatusOperation : RemoteOperation<OwnCloudVersion>() { | ||||
| 
 | ||||
|                 status = client.executeHttpMethod(getMethod) | ||||
|                 latestResult = RemoteOperationResult(getMethod) | ||||
|                 redirectedLocation = latestResult.redirectedLocation | ||||
|                 redirectedLocation = updateLocationWithRelativePath(redirectedLocation, latestResult.redirectedLocation) | ||||
|             } | ||||
| 
 | ||||
|             if (isSuccess(status)) { | ||||
| @ -119,7 +127,7 @@ class GetRemoteStatusOperation : RemoteOperation<OwnCloudVersion>() { | ||||
|                     latestResult = if (isRedirectToNonSecureConnection) { | ||||
|                         RemoteOperationResult(ResultCode.OK_REDIRECT_TO_NON_SECURE_CONNECTION) | ||||
|                     } else { | ||||
|                         if (baseUrlSt.startsWith(HTTPS_PREFIX)) RemoteOperationResult(ResultCode.OK_SSL) | ||||
|                         if (baseUrlStr.startsWith(HTTPS_PREFIX)) RemoteOperationResult(ResultCode.OK_SSL) | ||||
|                         else RemoteOperationResult(ResultCode.OK_NO_SSL) | ||||
|                     } | ||||
|                     latestResult.data = ocVersion | ||||
| @ -134,12 +142,12 @@ class GetRemoteStatusOperation : RemoteOperation<OwnCloudVersion>() { | ||||
|             latestResult = RemoteOperationResult(e) | ||||
|         } | ||||
|         when { | ||||
|             latestResult.isSuccess -> Timber.i("Connection check at $baseUrlSt successful: ${latestResult.logMessage}") | ||||
|             latestResult.isSuccess -> Timber.i("Connection check at $baseUrlStr successful: ${latestResult.logMessage}") | ||||
| 
 | ||||
|             latestResult.isException -> | ||||
|                 Timber.e(latestResult.exception, "Connection check at $baseUrlSt: ${latestResult.logMessage}") | ||||
|                 Timber.e(latestResult.exception, "Connection check at $baseUrlStr: ${latestResult.logMessage}") | ||||
| 
 | ||||
|             else -> Timber.e("Connection check at $baseUrlSt failed: ${latestResult.logMessage}") | ||||
|             else -> Timber.e("Connection check at $baseUrlStr failed: ${latestResult.logMessage}") | ||||
|         } | ||||
|         return successfulConnection | ||||
|     } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user