mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-31 02:17:41 +00:00 
			
		
		
		
	make propfind operation run without errors
This commit is contained in:
		
							parent
							
								
									d593474113
								
							
						
					
					
						commit
						ca2eff6647
					
				| @ -1 +1 @@ | ||||
| Subproject commit c73ea80bcbd6fd75379f88f497668eb9412d5490 | ||||
| Subproject commit 9b39bb9d05bf27510ceeee105fb6edc2068fe8e2 | ||||
| @ -1,26 +0,0 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!--  ownCloud Android Library is available under MIT license | ||||
|    Copyright (C) 2016 ownCloud GmbH. | ||||
|      | ||||
|    Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|    of this software and associated documentation files (the "Software"), to deal | ||||
|    in the Software without restriction, including without limitation the rights | ||||
|    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|    copies of the Software, and to permit persons to whom the Software is | ||||
|    furnished to do so, subject to the following conditions: | ||||
|     | ||||
|    The above copyright notice and this permission notice shall be included in | ||||
|    all copies or substantial portions of the Software. | ||||
|     | ||||
|    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,  | ||||
|    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||
|    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND  | ||||
|    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS  | ||||
|    BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN  | ||||
|    ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN  | ||||
|    CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
|    THE SOFTWARE. | ||||
| 
 | ||||
|  --> | ||||
|   | ||||
| <resources/> | ||||
| @ -24,8 +24,8 @@ | ||||
|  --> | ||||
|   | ||||
| <resources> | ||||
|     <string name="server_base_url"></string> | ||||
|     <string name="username"></string> | ||||
|     <string name="password"></string> | ||||
|     <string name="server_base_url">http://docker.oc.solidgear.es:11917/</string> | ||||
|     <string name="username">admin</string> | ||||
|     <string name="password">Password</string> | ||||
|     <string name ="user_agent">Mozilla/5.0 (Android) ownCloud sample </string> | ||||
| </resources> | ||||
|  | ||||
| @ -84,21 +84,14 @@ public class MainActivity extends Activity implements OnRemoteOperationListener, | ||||
|          | ||||
|         mHandler = new Handler(); | ||||
|          | ||||
|     	Uri serverUri = Uri.parse(getString(R.string.server_base_url)); | ||||
|     	final Uri serverUri = Uri.parse(getString(R.string.server_base_url)); | ||||
|     	mClient = OwnCloudClientFactory.createOwnCloudClient(serverUri, this, true); | ||||
| //    	mClient.setCredentials( | ||||
| //    			OwnCloudCredentialsFactory.newBasicCredentials( | ||||
| //    					getString(R.string.username), | ||||
| //    					getString(R.string.password) | ||||
| //				) | ||||
| //		); | ||||
| 
 | ||||
| 
 | ||||
| 		OCAccount ocAccount = new OCAccount(serverUri, | ||||
| 				OwnCloudCredentialsFactory.newBasicCredentials( | ||||
|     					getString(R.string.username), | ||||
|     					getString(R.string.password) | ||||
| 				) | ||||
| 		); | ||||
|     					getString(R.string.password))); | ||||
| 
 | ||||
|     	mOCContext = new OCContext(ocAccount); | ||||
|     	 | ||||
| @ -164,9 +157,9 @@ public class MainActivity extends Activity implements OnRemoteOperationListener, | ||||
| 
 | ||||
|     private void startRefresh() { | ||||
| 
 | ||||
| 		PropfindOperation propfindOperation = new PropfindOperation(mOCContext, FileUtils.PATH_SEPARATOR); | ||||
| 		final PropfindOperation propfindOperation = new PropfindOperation(mOCContext, FileUtils.PATH_SEPARATOR); | ||||
| 
 | ||||
| 		propfindOperation.exec(); | ||||
| 		Thread tread = new Thread(() -> propfindOperation.exec()); | ||||
| //    	ReadRemoteFolderOperation refreshOperation = new ReadRemoteFolderOperation(FileUtils.PATH_SEPARATOR); | ||||
| //    	refreshOperation.execute(mClient, this, mHandler); | ||||
|     } | ||||
|  | ||||
| @ -1,21 +1,25 @@ | ||||
| package com.owncloud.android.lib.refactor; | ||||
| 
 | ||||
| import android.net.Uri; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| import okhttp3.HttpUrl; | ||||
| import okhttp3.Interceptor; | ||||
| import okhttp3.OkHttpClient; | ||||
| import okhttp3.Request; | ||||
| import okhttp3.Response; | ||||
| 
 | ||||
| public abstract class RemoteOperation { | ||||
|     private final OCContext mContext; | ||||
|     private static OkHttpClient httpClient = null; | ||||
|     private static final String WEBDAV_PATH_4_0 = "/remote.php/dav"; | ||||
|     private static OkHttpClient mClient = null; | ||||
| 
 | ||||
|     protected RemoteOperation(OCContext context) { | ||||
|         mContext = context; | ||||
| 
 | ||||
|         if(httpClient == null) { | ||||
|             httpClient = new OkHttpClient.Builder() | ||||
|         if(mClient == null) { | ||||
|             mClient = new OkHttpClient.Builder() | ||||
|                     .followRedirects(false) | ||||
|                     .build(); | ||||
|         } | ||||
| @ -28,19 +32,46 @@ public abstract class RemoteOperation { | ||||
|     } | ||||
| 
 | ||||
|     protected OkHttpClient getClient() { | ||||
|         return httpClient; | ||||
|         return mClient.newBuilder() | ||||
|                 .addInterceptor(chain -> | ||||
|                         chain.proceed( | ||||
|                                 addRequestCredentials( | ||||
|                                         chain.request()) | ||||
|                                         .build())) | ||||
|                 .followRedirects(false) | ||||
|                 .build(); | ||||
|     } | ||||
| 
 | ||||
|     protected Uri.Builder getBaseUriBuilder() { | ||||
|         return mContext.getOCAccount().getBaseUri().buildUpon(); | ||||
|     } | ||||
| 
 | ||||
|     protected Uri.Builder getWebDAVUriBuilder() { | ||||
|         return getBaseUriBuilder().appendEncodedPath(WEBDAV_PATH_4_0); | ||||
|     protected Uri getWebDavUrl() { | ||||
|         return getBaseUriBuilder().appendEncodedPath(WEBDAV_PATH_4_0).build(); | ||||
|     } | ||||
| 
 | ||||
|     protected Uri getWebDavUri(String resourcePath) { | ||||
|         return getBaseUriBuilder() | ||||
|                 .appendEncodedPath(WEBDAV_PATH_4_0) | ||||
|                 .appendEncodedPath(resourcePath) | ||||
|                 .build(); | ||||
|     } | ||||
| 
 | ||||
|     protected HttpUrl getWebDavHttpUrl(String resourcePath) { | ||||
|         return HttpUrl.parse( | ||||
|                 getBaseUriBuilder() | ||||
|                 .appendEncodedPath(WEBDAV_PATH_4_0) | ||||
|                 .appendEncodedPath(resourcePath) | ||||
|                 .build() | ||||
|                 .toString()); | ||||
|     } | ||||
| 
 | ||||
|     protected Request.Builder getRequestBuilder() { | ||||
|         Request.Builder builder = new Request.Builder(); | ||||
|         return new Request.Builder(); | ||||
|     } | ||||
| 
 | ||||
|     private Request.Builder addRequestCredentials(Request request) { | ||||
|         Request.Builder builder =  request.newBuilder(); | ||||
| 
 | ||||
|         for(Map.Entry<String, String> header | ||||
|                 : mContext.getOCAccount() | ||||
| @ -55,7 +86,8 @@ public abstract class RemoteOperation { | ||||
|                 .getOCAccount() | ||||
|                 .getCredentials() | ||||
|                 .getCredentialCookie(); | ||||
|         if(credentialCookie == null) { | ||||
|         if(credentialCookie != null) { | ||||
|             System.err.println(credentialCookie); | ||||
|             builder.addHeader("Cookie", credentialCookie); | ||||
|         } | ||||
| 
 | ||||
|  | ||||
| @ -91,7 +91,11 @@ public class OCAccount { | ||||
|         } | ||||
|         mSavedAccount = null; | ||||
|         mSavedAccountName = null; | ||||
|         if(baseUri != null && !baseUri.equals("")) { | ||||
|             mBaseUri = baseUri; | ||||
|         } else { | ||||
|             throw new IllegalArgumentException("baseUri can not be null or empty"); | ||||
|         } | ||||
|         mCredentials = credentials != null | ||||
|                 ? credentials | ||||
|                 : new OCAnonymousCredentials(); | ||||
|  | ||||
| @ -5,12 +5,15 @@ import com.owncloud.android.lib.common.network.WebdavUtils; | ||||
| import com.owncloud.android.lib.refactor.RemoteOperation; | ||||
| import com.owncloud.android.lib.refactor.RemoteOperationResult; | ||||
| import java.io.IOException; | ||||
| import java.util.logging.Logger; | ||||
| 
 | ||||
| import at.bitfire.dav4android.Constants; | ||||
| import at.bitfire.dav4android.DavResource; | ||||
| import at.bitfire.dav4android.exception.DavException; | ||||
| import at.bitfire.dav4android.exception.HttpException; | ||||
| import at.bitfire.dav4android.property.DisplayName; | ||||
| import okhttp3.HttpUrl; | ||||
| import okhttp3.OkHttpClient; | ||||
| 
 | ||||
| public class PropfindOperation extends RemoteOperation { | ||||
| 
 | ||||
| @ -24,23 +27,17 @@ public class PropfindOperation extends RemoteOperation { | ||||
| 
 | ||||
|     @Override | ||||
|     public RemoteOperationResult exec() { | ||||
|         DavResource davResource = new DavResource( | ||||
|                 getClient(), | ||||
|                 HttpUrl.parse(getWebDAVUriBuilder() + WebdavUtils.encodePath(mRemotePath)), | ||||
|                 null); | ||||
| 
 | ||||
|         try { | ||||
|             davResource.propfind(1, DisplayName.NAME); | ||||
|         } catch (IOException e) { | ||||
|             e.printStackTrace(); | ||||
|         } catch (HttpException e) { | ||||
|             e.printStackTrace(); | ||||
|         } catch (DavException e) { | ||||
|             HttpUrl location = HttpUrl.parse(getBaseUriBuilder().build().toString()); | ||||
| 
 | ||||
|             DavResource davResource = new DavResource(getClient(), getWebDavHttpUrl("/")); | ||||
|             davResource.propfind(0, DisplayName.NAME); | ||||
| 
 | ||||
|         } catch (Exception e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
| 
 | ||||
|         davResource.getProperties(); | ||||
| 
 | ||||
|         return null; | ||||
|     } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user