mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-31 02:17:41 +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() |         val baseUriStr = client.baseUri.toString() | ||||||
|         if (baseUriStr.startsWith(HTTP_PREFIX) || baseUriStr.startsWith( |         if (baseUriStr.startsWith(HTTP_PREFIX) || baseUriStr.startsWith( | ||||||
|                 HTTPS_PREFIX |                 HTTPS_PREFIX | ||||||
|             )) { |             ) | ||||||
|  |         ) { | ||||||
|             tryConnection(client) |             tryConnection(client) | ||||||
|         } else { |         } else { | ||||||
|             client.baseUri = Uri.parse(HTTPS_PREFIX + baseUriStr) |             client.baseUri = Uri.parse(HTTPS_PREFIX + baseUriStr) | ||||||
| @ -67,11 +68,18 @@ class GetRemoteStatusOperation : RemoteOperation<OwnCloudVersion>() { | |||||||
|         return latestResult |         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 { |     private fun tryConnection(client: OwnCloudClient): Boolean { | ||||||
|         var successfulConnection = false |         var successfulConnection = false | ||||||
|         val baseUrlSt = client.baseUri.toString() |         val baseUrlStr = client.baseUri.toString() | ||||||
|         try { |         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) |                 setReadTimeout(TRY_CONNECTION_TIMEOUT, TimeUnit.SECONDS) | ||||||
|                 setConnectionTimeout(TRY_CONNECTION_TIMEOUT, TimeUnit.SECONDS) |                 setConnectionTimeout(TRY_CONNECTION_TIMEOUT, TimeUnit.SECONDS) | ||||||
|             } |             } | ||||||
| @ -89,11 +97,11 @@ class GetRemoteStatusOperation : RemoteOperation<OwnCloudVersion>() { | |||||||
|                 return successfulConnection |                 return successfulConnection | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             var redirectedLocation = latestResult.redirectedLocation |             var redirectedLocation = updateLocationWithRelativePath(baseUrlStr, latestResult.redirectedLocation) | ||||||
|             while (!redirectedLocation.isNullOrEmpty() && !latestResult.isSuccess) { |             while (!redirectedLocation.isNullOrEmpty() && !latestResult.isSuccess) { | ||||||
|                 isRedirectToNonSecureConnection = |                 isRedirectToNonSecureConnection = | ||||||
|                     isRedirectToNonSecureConnection || |                     isRedirectToNonSecureConnection || | ||||||
|                             (baseUrlSt.startsWith(HTTPS_PREFIX) && redirectedLocation.startsWith( |                             (baseUrlStr.startsWith(HTTPS_PREFIX) && redirectedLocation.startsWith( | ||||||
|                                 HTTP_PREFIX |                                 HTTP_PREFIX | ||||||
|                             )) |                             )) | ||||||
| 
 | 
 | ||||||
| @ -104,7 +112,7 @@ class GetRemoteStatusOperation : RemoteOperation<OwnCloudVersion>() { | |||||||
| 
 | 
 | ||||||
|                 status = client.executeHttpMethod(getMethod) |                 status = client.executeHttpMethod(getMethod) | ||||||
|                 latestResult = RemoteOperationResult(getMethod) |                 latestResult = RemoteOperationResult(getMethod) | ||||||
|                 redirectedLocation = latestResult.redirectedLocation |                 redirectedLocation = updateLocationWithRelativePath(redirectedLocation, latestResult.redirectedLocation) | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if (isSuccess(status)) { |             if (isSuccess(status)) { | ||||||
| @ -119,7 +127,7 @@ class GetRemoteStatusOperation : RemoteOperation<OwnCloudVersion>() { | |||||||
|                     latestResult = if (isRedirectToNonSecureConnection) { |                     latestResult = if (isRedirectToNonSecureConnection) { | ||||||
|                         RemoteOperationResult(ResultCode.OK_REDIRECT_TO_NON_SECURE_CONNECTION) |                         RemoteOperationResult(ResultCode.OK_REDIRECT_TO_NON_SECURE_CONNECTION) | ||||||
|                     } else { |                     } 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) |                         else RemoteOperationResult(ResultCode.OK_NO_SSL) | ||||||
|                     } |                     } | ||||||
|                     latestResult.data = ocVersion |                     latestResult.data = ocVersion | ||||||
| @ -134,12 +142,12 @@ class GetRemoteStatusOperation : RemoteOperation<OwnCloudVersion>() { | |||||||
|             latestResult = RemoteOperationResult(e) |             latestResult = RemoteOperationResult(e) | ||||||
|         } |         } | ||||||
|         when { |         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 -> |             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 |         return successfulConnection | ||||||
|     } |     } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user