mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-31 10:27:45 +00:00 
			
		
		
		
	Implement GetRemoteStatusOperation using new wrapper
This commit is contained in:
		
							parent
							
								
									01d4592de0
								
							
						
					
					
						commit
						a730980c34
					
				| @ -1,5 +1,5 @@ | |||||||
| /* ownCloud Android Library is available under MIT license | /* ownCloud Android Library is available under MIT license | ||||||
|  *   Copyright (C) 2016 ownCloud GmbH. |  *   Copyright (C) 2018 ownCloud GmbH. | ||||||
|  *    |  *    | ||||||
|  *   Permission is hereby granted, free of charge, to any person obtaining a copy |  *   Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  *   of this software and associated documentation files (the "Software"), to deal |  *   of this software and associated documentation files (the "Software"), to deal | ||||||
| @ -27,7 +27,9 @@ package com.owncloud.android.lib.resources.status; | |||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| 
 | 
 | ||||||
| import org.apache.commons.httpclient.HttpStatus; | import org.apache.commons.httpclient.HttpStatus; | ||||||
| import org.apache.commons.httpclient.methods.GetMethod; | 
 | ||||||
|  | import com.owncloud.android.lib.common.http.HttpConstants; | ||||||
|  | import com.owncloud.android.lib.common.http.nonwebdav.GetMethod; | ||||||
| import org.apache.commons.httpclient.params.HttpMethodParams; | import org.apache.commons.httpclient.params.HttpMethodParams; | ||||||
| import org.apache.commons.httpclient.params.HttpParams; | import org.apache.commons.httpclient.params.HttpParams; | ||||||
| import org.json.JSONException; | import org.json.JSONException; | ||||||
| @ -44,11 +46,17 @@ import com.owncloud.android.lib.common.operations.RemoteOperation; | |||||||
| import com.owncloud.android.lib.common.operations.RemoteOperationResult; | import com.owncloud.android.lib.common.operations.RemoteOperationResult; | ||||||
| import com.owncloud.android.lib.common.utils.Log_OC; | import com.owncloud.android.lib.common.utils.Log_OC; | ||||||
| 
 | 
 | ||||||
|  | import okhttp3.Request; | ||||||
|  | import okhttp3.Response; | ||||||
|  | 
 | ||||||
|  | import static com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode.OK; | ||||||
|  | 
 | ||||||
| /** | /** | ||||||
|  * Checks if the server is valid and if the server supports the Share API |  * Checks if the server is valid and if the server supports the Share API | ||||||
|  * |  * | ||||||
|  * @author David A. Velasco |  * @author David A. Velasco | ||||||
|  * @author masensio |  * @author masensio | ||||||
|  |  * @author David González Verdugo | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| public class GetRemoteStatusOperation extends RemoteOperation { | public class GetRemoteStatusOperation extends RemoteOperation { | ||||||
| @ -75,47 +83,52 @@ public class GetRemoteStatusOperation extends RemoteOperation { | |||||||
| 
 | 
 | ||||||
|     private boolean tryConnection(OwnCloudClient client) { |     private boolean tryConnection(OwnCloudClient client) { | ||||||
|         boolean retval = false; |         boolean retval = false; | ||||||
|         GetMethod get = null; |  | ||||||
|         String baseUrlSt = client.getBaseUri().toString(); |         String baseUrlSt = client.getBaseUri().toString(); | ||||||
|         try { |         try { | ||||||
|             get = new GetMethod(baseUrlSt + OwnCloudClient.STATUS_PATH); |  | ||||||
| 
 | 
 | ||||||
|             HttpParams params = get.getParams().getDefaultParams(); |             String url = baseUrlSt + OwnCloudClient.STATUS_PATH; | ||||||
|             params.setParameter(HttpMethodParams.USER_AGENT, | 
 | ||||||
|                 OwnCloudClientManagerFactory.getUserAgent()); |             final Request request = new Request.Builder() | ||||||
|             get.getParams().setDefaults(params); |                     .url(url) | ||||||
|  |                     .build(); | ||||||
| 
 | 
 | ||||||
|             client.setFollowRedirects(false); |             client.setFollowRedirects(false); | ||||||
|  |             GetMethod getMethod = new GetMethod(client.getOkHttpClient(), request); | ||||||
|  | 
 | ||||||
|  |             Response response = client.executeHttpMethod(getMethod); | ||||||
|  | 
 | ||||||
|  |             mLatestResult = new RemoteOperationResult(OK); | ||||||
|  | 
 | ||||||
|             boolean isRedirectToNonSecureConnection = false; |             boolean isRedirectToNonSecureConnection = false; | ||||||
|             int status = client.executeMethod(get, TRY_CONNECTION_TIMEOUT, TRY_CONNECTION_TIMEOUT); |  | ||||||
|             mLatestResult = new RemoteOperationResult((status == HttpStatus.SC_OK), get); |  | ||||||
| 
 | 
 | ||||||
|             String redirectedLocation = mLatestResult.getRedirectedLocation(); |             // TODO Check this, although OkHttp should take care of the redirections | ||||||
|             while (redirectedLocation != null && redirectedLocation.length() > 0 | //            boolean isRedirectToNonSecureConnection = false; | ||||||
|                 && !mLatestResult.isSuccess()) { | //            String redirectedLocation = mLatestResult.getRedirectedLocation(); | ||||||
|  | //            while (redirectedLocation != null && redirectedLocation.length() > 0 | ||||||
|  | //                && !mLatestResult.isSuccess()) { | ||||||
|  | // | ||||||
|  | //                isRedirectToNonSecureConnection |= ( | ||||||
|  | //                    baseUrlSt.startsWith(HTTPS_PREFIX) && | ||||||
|  | //                        redirectedLocation.startsWith(HTTP_PREFIX) | ||||||
|  | //                ); | ||||||
|  | //                get.releaseConnection(); | ||||||
|  | //                get = new GetMethod(redirectedLocation); | ||||||
|  | //                status = client.executeMethod(get, TRY_CONNECTION_TIMEOUT, TRY_CONNECTION_TIMEOUT); | ||||||
|  | //                mLatestResult = new RemoteOperationResult( | ||||||
|  | //                    (status == HttpStatus.SC_OK), | ||||||
|  | //                    get | ||||||
|  | //                ); | ||||||
|  | //                redirectedLocation = mLatestResult.getRedirectedLocation(); | ||||||
|  | //            } | ||||||
| 
 | 
 | ||||||
|                 isRedirectToNonSecureConnection |= ( |             if (response.code() == HttpStatus.SC_OK) { | ||||||
|                     baseUrlSt.startsWith(HTTPS_PREFIX) && |  | ||||||
|                         redirectedLocation.startsWith(HTTP_PREFIX) |  | ||||||
|                 ); |  | ||||||
|                 get.releaseConnection(); |  | ||||||
|                 get = new GetMethod(redirectedLocation); |  | ||||||
|                 status = client.executeMethod(get, TRY_CONNECTION_TIMEOUT, TRY_CONNECTION_TIMEOUT); |  | ||||||
|                 mLatestResult = new RemoteOperationResult( |  | ||||||
|                     (status == HttpStatus.SC_OK), |  | ||||||
|                     get |  | ||||||
|                 ); |  | ||||||
|                 redirectedLocation = mLatestResult.getRedirectedLocation(); |  | ||||||
|             } |  | ||||||
| 
 | 
 | ||||||
|             String response = get.getResponseBodyAsString(); |                 JSONObject respJSON = new JSONObject(response.body().string()); | ||||||
|             if (status == HttpStatus.SC_OK) { |                 if (!respJSON.getBoolean(NODE_INSTALLED)) { | ||||||
|                 JSONObject json = new JSONObject(response); |  | ||||||
|                 if (!json.getBoolean(NODE_INSTALLED)) { |  | ||||||
|                     mLatestResult = new RemoteOperationResult( |                     mLatestResult = new RemoteOperationResult( | ||||||
|                         RemoteOperationResult.ResultCode.INSTANCE_NOT_CONFIGURED); |                         RemoteOperationResult.ResultCode.INSTANCE_NOT_CONFIGURED); | ||||||
|                 } else { |                 } else { | ||||||
|                     String version = json.getString(NODE_VERSION); |                     String version = respJSON.getString(NODE_VERSION); | ||||||
|                     OwnCloudVersion ocVersion = new OwnCloudVersion(version); |                     OwnCloudVersion ocVersion = new OwnCloudVersion(version); | ||||||
|                     /// the version object will be returned even if the version is invalid, no error code; |                     /// the version object will be returned even if the version is invalid, no error code; | ||||||
|                     /// every app will decide how to act if (ocVersion.isVersionValid() == false) |                     /// every app will decide how to act if (ocVersion.isVersionValid() == false) | ||||||
| @ -133,14 +146,14 @@ public class GetRemoteStatusOperation extends RemoteOperation { | |||||||
|                         ); |                         ); | ||||||
|                     } |                     } | ||||||
| 
 | 
 | ||||||
|                     ArrayList<Object> data = new ArrayList<Object>(); |                     ArrayList<Object> data = new ArrayList<>(); | ||||||
|                     data.add(ocVersion); |                     data.add(ocVersion); | ||||||
|                     mLatestResult.setData(data); |                     mLatestResult.setData(data); | ||||||
|                     retval = true; |                     retval = true; | ||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
|             } else { |             } else { | ||||||
|                 mLatestResult = new RemoteOperationResult(false, get); |                 mLatestResult = new RemoteOperationResult(false, getMethod.getRequest(), response); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|         } catch (JSONException e) { |         } catch (JSONException e) { | ||||||
| @ -149,10 +162,6 @@ public class GetRemoteStatusOperation extends RemoteOperation { | |||||||
| 
 | 
 | ||||||
|         } catch (Exception e) { |         } catch (Exception e) { | ||||||
|             mLatestResult = new RemoteOperationResult(e); |             mLatestResult = new RemoteOperationResult(e); | ||||||
| 
 |  | ||||||
|         } finally { |  | ||||||
|             if (get != null) |  | ||||||
|                 get.releaseConnection(); |  | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (mLatestResult.isSuccess()) { |         if (mLatestResult.isSuccess()) { | ||||||
| @ -196,5 +205,4 @@ public class GetRemoteStatusOperation extends RemoteOperation { | |||||||
|         } |         } | ||||||
|         return mLatestResult; |         return mLatestResult; | ||||||
|     } |     } | ||||||
| 
 |  | ||||||
| } | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user