mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-31 10:27:45 +00:00 
			
		
		
		
	Include credentials [WIP]
This commit is contained in:
		
							parent
							
								
									11938a1fcc
								
							
						
					
					
						commit
						d67a41d5cc
					
				| @ -33,6 +33,7 @@ import android.net.Uri; | |||||||
| import com.owncloud.android.lib.common.authentication.OwnCloudCredentials; | import com.owncloud.android.lib.common.authentication.OwnCloudCredentials; | ||||||
| import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory; | import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory; | ||||||
| import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory.OwnCloudAnonymousCredentials; | import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory.OwnCloudAnonymousCredentials; | ||||||
|  | import com.owncloud.android.lib.common.methods.HttpBaseMethod; | ||||||
| import com.owncloud.android.lib.common.network.RedirectionPath; | import com.owncloud.android.lib.common.network.RedirectionPath; | ||||||
| import com.owncloud.android.lib.common.utils.Log_OC; | import com.owncloud.android.lib.common.utils.Log_OC; | ||||||
| import com.owncloud.android.lib.resources.status.OwnCloudVersion; | import com.owncloud.android.lib.resources.status.OwnCloudVersion; | ||||||
| @ -49,7 +50,6 @@ import org.apache.commons.httpclient.URI; | |||||||
| import org.apache.commons.httpclient.URIException; | import org.apache.commons.httpclient.URIException; | ||||||
| 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 com.owncloud.android.lib.common.methods.HttpBaseMethod; |  | ||||||
| 
 | 
 | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| import java.io.InputStream; | import java.io.InputStream; | ||||||
| @ -61,6 +61,7 @@ import okhttp3.Protocol; | |||||||
| public class OwnCloudClient extends HttpClient { | public class OwnCloudClient extends HttpClient { | ||||||
| 
 | 
 | ||||||
|     public static final String WEBDAV_PATH_4_0 = "/remote.php/webdav"; |     public static final String WEBDAV_PATH_4_0 = "/remote.php/webdav"; | ||||||
|  |     public static final String NEW_WEBDAV_PATH_4_0 = "/remote.php/dav/files/"; | ||||||
|     public static final String STATUS_PATH = "/status.php"; |     public static final String STATUS_PATH = "/status.php"; | ||||||
|     public static final String FILES_WEB_PATH = "/index.php/apps/files"; |     public static final String FILES_WEB_PATH = "/index.php/apps/files"; | ||||||
| 
 | 
 | ||||||
| @ -299,7 +300,19 @@ public class OwnCloudClient extends HttpClient { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public int executeHttpMethod (HttpBaseMethod method) throws Exception { |     public int executeHttpMethod (HttpBaseMethod method) throws Exception { | ||||||
|         int status = method.execute(); | 
 | ||||||
|  |         boolean repeatWithFreshCredentials = false; | ||||||
|  |         int repeatCounter = 0; | ||||||
|  |         int status; | ||||||
|  | 
 | ||||||
|  |         do { | ||||||
|  |             status = method.execute(); | ||||||
|  |             repeatWithFreshCredentials = checkUnauthorizedAccess(status, repeatCounter); | ||||||
|  |             if (repeatWithFreshCredentials) { | ||||||
|  |                 repeatCounter++; | ||||||
|  |             } | ||||||
|  |         } while (repeatWithFreshCredentials); | ||||||
|  | 
 | ||||||
|         return status; |         return status; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -432,6 +445,10 @@ public class OwnCloudClient extends HttpClient { | |||||||
|         return Uri.parse(mBaseUri + WEBDAV_PATH_4_0); |         return Uri.parse(mBaseUri + WEBDAV_PATH_4_0); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public Uri getNewWebDavUri() { | ||||||
|  |         return Uri.parse(mBaseUri + NEW_WEBDAV_PATH_4_0 + mCredentials.getUsername()); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * Sets the root URI to the ownCloud server. |      * Sets the root URI to the ownCloud server. | ||||||
|      * |      * | ||||||
|  | |||||||
| @ -58,7 +58,7 @@ public class OwnCloudBasicCredentials implements OwnCloudCredentials { | |||||||
|     public void applyTo(OwnCloudClient client) { |     public void applyTo(OwnCloudClient client) { | ||||||
|         AuthPolicy.registerAuthScheme(AuthState.PREEMPTIVE_AUTH_SCHEME, BasicScheme.class); |         AuthPolicy.registerAuthScheme(AuthState.PREEMPTIVE_AUTH_SCHEME, BasicScheme.class); | ||||||
| 
 | 
 | ||||||
|         List<String> authPrefs = new ArrayList<String>(1); |         List<String> authPrefs = new ArrayList<>(1); | ||||||
|         authPrefs.add(AuthPolicy.BASIC); |         authPrefs.add(AuthPolicy.BASIC); | ||||||
| 
 | 
 | ||||||
|         client.getOkHttpClient().newBuilder() |         client.getOkHttpClient().newBuilder() | ||||||
|  | |||||||
| @ -1,7 +1,5 @@ | |||||||
| package com.owncloud.android.lib.common.methods; | package com.owncloud.android.lib.common.methods; | ||||||
| 
 | 
 | ||||||
| import java.io.IOException; |  | ||||||
| 
 |  | ||||||
| import at.bitfire.dav4android.DavResource; | import at.bitfire.dav4android.DavResource; | ||||||
| 
 | 
 | ||||||
| public abstract class DavMethod implements HttpBaseMethod { | public abstract class DavMethod implements HttpBaseMethod { | ||||||
|  | |||||||
| @ -1,6 +1,5 @@ | |||||||
| package com.owncloud.android.lib.common.methods; | package com.owncloud.android.lib.common.methods; | ||||||
| 
 | 
 | ||||||
| public interface HttpBaseMethod { | public interface HttpBaseMethod { | ||||||
| 
 |  | ||||||
|     int execute() throws Exception; |     int execute() throws Exception; | ||||||
| } | } | ||||||
| @ -6,6 +6,7 @@ import at.bitfire.dav4android.DavResource; | |||||||
| import at.bitfire.dav4android.PropertyUtils; | import at.bitfire.dav4android.PropertyUtils; | ||||||
| import at.bitfire.dav4android.exception.DavException; | import at.bitfire.dav4android.exception.DavException; | ||||||
| import at.bitfire.dav4android.exception.HttpException; | import at.bitfire.dav4android.exception.HttpException; | ||||||
|  | import at.bitfire.dav4android.exception.UnauthorizedException; | ||||||
| 
 | 
 | ||||||
| public class PropfindMethod extends DavMethod { | public class PropfindMethod extends DavMethod { | ||||||
| 
 | 
 | ||||||
| @ -16,8 +17,12 @@ public class PropfindMethod extends DavMethod { | |||||||
|         mDepth = depth; |         mDepth = depth; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     public int execute() throws DavException, IOException, HttpException { |     public int execute() throws IOException, HttpException, DavException { | ||||||
|         mDavResource.propfind(mDepth, PropertyUtils.INSTANCE.getAllPropSet()); |         try { | ||||||
|  |             mDavResource.propfind(mDepth, PropertyUtils.INSTANCE.getAllPropSet()); | ||||||
|  |         } catch (UnauthorizedException davException) { | ||||||
|  |             return 401; | ||||||
|  |         } | ||||||
|         return mDavResource.getResponse().code(); |         return mDavResource.getResponse().code(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -206,7 +206,6 @@ public class RemoteOperationResult implements Serializable { | |||||||
|         } else { |         } else { | ||||||
|             mCode = ResultCode.UNKNOWN_ERROR; |             mCode = ResultCode.UNKNOWN_ERROR; | ||||||
|         } |         } | ||||||
| 
 |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|  | |||||||
| @ -76,14 +76,13 @@ public class ReadRemoteFolderOperation extends RemoteOperation { | |||||||
| 
 | 
 | ||||||
|         try { |         try { | ||||||
| 
 | 
 | ||||||
|             final HttpUrl location = HttpUrl.parse(client.getWebdavUri() + WebdavUtils.encodePath(mRemotePath)); |             final HttpUrl location = HttpUrl.parse(client.getNewWebDavUri() + WebdavUtils.encodePath(mRemotePath)); | ||||||
|             DavOCResource davOCResource = new DavOCResource(client.getOkHttpClient(), location); |             DavOCResource davOCResource = new DavOCResource(client.getOkHttpClient(), location); | ||||||
|             PropfindMethod propfindMethod = new PropfindMethod(davOCResource, 1); |             PropfindMethod propfindMethod = new PropfindMethod(davOCResource, 1); | ||||||
| 
 | 
 | ||||||
|             int status = client.executeHttpMethod(propfindMethod); |             int status = client.executeHttpMethod(propfindMethod); | ||||||
| 
 | 
 | ||||||
|             // TODO Refactor from here down |             // TODO Refactor from here down | ||||||
| 
 |  | ||||||
|             // remote request |             // remote request | ||||||
| //            query = new PropFindMethod(client.getWebdavUri() + WebdavUtils.encodePath(mRemotePath), | //            query = new PropFindMethod(client.getWebdavUri() + WebdavUtils.encodePath(mRemotePath), | ||||||
| //                WebdavUtils.getAllPropSet(),    // PropFind Properties | //                WebdavUtils.getAllPropSet(),    // PropFind Properties | ||||||
| @ -113,8 +112,6 @@ public class ReadRemoteFolderOperation extends RemoteOperation { | |||||||
| 
 | 
 | ||||||
|         } catch (Exception e) { |         } catch (Exception e) { | ||||||
|             result = new RemoteOperationResult(e); |             result = new RemoteOperationResult(e); | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|         } finally { |         } finally { | ||||||
|             if (query != null) |             if (query != null) | ||||||
|                 query.releaseConnection();  // let the connection available for other methods |                 query.releaseConnection();  // let the connection available for other methods | ||||||
| @ -150,14 +147,14 @@ public class ReadRemoteFolderOperation extends RemoteOperation { | |||||||
| 
 | 
 | ||||||
|         // parse data from remote folder  |         // parse data from remote folder  | ||||||
|         WebdavEntry we = new WebdavEntry(remoteData.getResponses()[0], |         WebdavEntry we = new WebdavEntry(remoteData.getResponses()[0], | ||||||
|             client.getWebdavUri().getPath()); |             client.getNewWebDavUri().getPath()); | ||||||
|         mFolderAndFiles.add(fillOCFile(we)); |         mFolderAndFiles.add(fillOCFile(we)); | ||||||
| 
 | 
 | ||||||
|         // loop to update every child |         // loop to update every child | ||||||
|         RemoteFile remoteFile = null; |         RemoteFile remoteFile = null; | ||||||
|         for (int i = 1; i < remoteData.getResponses().length; ++i) { |         for (int i = 1; i < remoteData.getResponses().length; ++i) { | ||||||
|             /// new OCFile instance with the data from the server |             /// new OCFile instance with the data from the server | ||||||
|             we = new WebdavEntry(remoteData.getResponses()[i], client.getWebdavUri().getPath()); |             we = new WebdavEntry(remoteData.getResponses()[i], client.getNewWebDavUri().getPath()); | ||||||
|             remoteFile = fillOCFile(we); |             remoteFile = fillOCFile(we); | ||||||
|             mFolderAndFiles.add(remoteFile); |             mFolderAndFiles.add(remoteFile); | ||||||
|         } |         } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user