mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-31 18:37:17 +00:00 
			
		
		
		
	OC-2675: CreateShareRemoteOperation in Library
This commit is contained in:
		
							parent
							
								
									4ab2c9ac66
								
							
						
					
					
						commit
						974e55a2b9
					
				| @ -0,0 +1,146 @@ | |||||||
|  | /* ownCloud Android Library is available under MIT license | ||||||
|  |  *   Copyright (C) 2014 ownCloud (http://www.owncloud.org/) | ||||||
|  |  *    | ||||||
|  |  *   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. | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package com.owncloud.android.lib.operations.remote; | ||||||
|  | 
 | ||||||
|  | import java.io.ByteArrayInputStream; | ||||||
|  | import java.io.InputStream; | ||||||
|  | 
 | ||||||
|  | import org.apache.commons.httpclient.methods.PostMethod; | ||||||
|  | import org.apache.http.HttpStatus; | ||||||
|  | 
 | ||||||
|  | import android.util.Log; | ||||||
|  | 
 | ||||||
|  | import com.owncloud.android.lib.network.OwnCloudClient; | ||||||
|  | import com.owncloud.android.lib.operations.common.OCShare; | ||||||
|  | import com.owncloud.android.lib.operations.common.RemoteOperation; | ||||||
|  | import com.owncloud.android.lib.operations.common.RemoteOperationResult; | ||||||
|  | import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode; | ||||||
|  | import com.owncloud.android.lib.operations.common.ShareType; | ||||||
|  | import com.owncloud.android.lib.utils.ShareUtils; | ||||||
|  | import com.owncloud.android.lib.utils.ShareXMLParser; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Creates a new share.  This allows sharing with a user or group or as a link. | ||||||
|  |  *  | ||||||
|  |  * @author masensio | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  | public class CreateShareRemoteOperation extends RemoteOperation { | ||||||
|  | 
 | ||||||
|  | 	private static final String TAG = CreateShareRemoteOperation.class.getSimpleName(); | ||||||
|  | 
 | ||||||
|  | 	private static final String PARAM_PATH = "path"; | ||||||
|  | 	private static final String PARAM_SHARE_TYPE = "shareType"; | ||||||
|  | 	private static final String PARAM_SHARE_WITH = "shareWith"; | ||||||
|  | 	private static final String PARAM_PUBLIC_UPLOAD = "publicUpload"; | ||||||
|  | 	private static final String PARAM_PASSWORD = "password"; | ||||||
|  | 	private static final String PARAM_PERMISSIONS = "permissions"; | ||||||
|  | 
 | ||||||
|  | 	private OCShare mShare; | ||||||
|  | 	private String mPath; | ||||||
|  | 	private ShareType mShareType; | ||||||
|  | 	private String mShareWith; | ||||||
|  | 	private boolean mPublicUpload; | ||||||
|  | 	private String mPassword; | ||||||
|  | 	private int mPermissions; | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Constructor | ||||||
|  | 	 * @param path			Full path of the file/folder being shared. Mandatory argument | ||||||
|  | 	 * @param shareType		‘0’ = user, ‘1’ = group, ‘3’ = Public link. Mandatory argument | ||||||
|  | 	 * @param shareWith		User/group ID with who the file should be shared.  This is mandatory for shareType of 0 or 1 | ||||||
|  | 	 * @param publicUpload	If ‘false’ (default) public cannot upload to a public shared folder.  | ||||||
|  | 	 * 						If ‘true’ public can upload to a shared folder. Only available for public link shares | ||||||
|  | 	 * @param password		Password to protect a public link share. Only available for public link shares | ||||||
|  | 	 * @param permissions	1 - Read only – Default for “public” shares | ||||||
|  | 	 * 						2 - Update | ||||||
|  | 	 * 						4 - Create | ||||||
|  | 	 * 						8 - Delete | ||||||
|  | 	 * 						16- Re-share | ||||||
|  | 	 * 						31- All above – Default for “private” shares | ||||||
|  | 	 * 						For user or group shares. | ||||||
|  | 	 * 						To obtain combinations, add the desired values together.   | ||||||
|  | 	 * 						For instance, for “Re-Share”, “delete”, “read”, “update”, add 16+8+2+1 = 27. | ||||||
|  | 	 */ | ||||||
|  | 	public CreateShareRemoteOperation(String path, ShareType shareType, String shareWith, boolean publicUpload,  | ||||||
|  | 			String password, int permissions) { | ||||||
|  | 
 | ||||||
|  | 		mPath = path; | ||||||
|  | 		mShareType = shareType; | ||||||
|  | 		mShareWith = shareWith; | ||||||
|  | 		mPublicUpload = publicUpload; | ||||||
|  | 		mPassword = password; | ||||||
|  | 		mPermissions = permissions; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Override | ||||||
|  | 	protected RemoteOperationResult run(OwnCloudClient client) { | ||||||
|  | 		RemoteOperationResult result = null; | ||||||
|  | 		int status = -1; | ||||||
|  | 
 | ||||||
|  | 		// Post Method | ||||||
|  | 		PostMethod post = new PostMethod(client.getBaseUri() + ShareUtils.SHAREAPI_ROUTE); | ||||||
|  | 		Log.d(TAG, "URL ------> " + client.getBaseUri() + ShareUtils.SHAREAPI_ROUTE); | ||||||
|  | 
 | ||||||
|  | 		post.addParameter(PARAM_PATH, mPath); | ||||||
|  | 		post.addParameter(PARAM_SHARE_TYPE, Integer.toString(mShareType.getValue())); | ||||||
|  | 		post.addParameter(PARAM_SHARE_WITH, mShareWith); | ||||||
|  | 		post.addParameter(PARAM_PUBLIC_UPLOAD, Boolean.toString(mPublicUpload)); | ||||||
|  | 		post.addParameter(PARAM_PASSWORD, mPassword); | ||||||
|  | 		post.addParameter(PARAM_PERMISSIONS, Integer.toString(mPermissions)); | ||||||
|  | 
 | ||||||
|  | 		try { | ||||||
|  | 			status = client.executeMethod(post); | ||||||
|  | 
 | ||||||
|  | 			if(isSuccess(status)) { | ||||||
|  | 				String response = post.getResponseBodyAsString(); | ||||||
|  | 				Log.d(TAG, "Successful response: " + response); | ||||||
|  | 
 | ||||||
|  | 				result = new RemoteOperationResult(ResultCode.OK); | ||||||
|  | 				 | ||||||
|  | 				// TODO | ||||||
|  | 				// Parse xml response --> obtain the response in ShareFiles ArrayList | ||||||
|  | 				// convert String into InputStream | ||||||
|  | 				InputStream is = new ByteArrayInputStream(response.getBytes()); | ||||||
|  | 				ShareXMLParser xmlParser = new ShareXMLParser(); | ||||||
|  | 
 | ||||||
|  | 			} | ||||||
|  | 		} catch (Exception e) { | ||||||
|  | 			result = new RemoteOperationResult(e); | ||||||
|  | 			Log.e(TAG, "Exception while Creating New Share", e); | ||||||
|  | 		} finally { | ||||||
|  | 			post.releaseConnection(); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 		return result; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	private boolean isSuccess(int status) { | ||||||
|  | 		return (status == HttpStatus.SC_OK); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | } | ||||||
| @ -39,6 +39,7 @@ import com.owncloud.android.lib.operations.common.RemoteOperation; | |||||||
| import com.owncloud.android.lib.operations.common.RemoteOperationResult; | import com.owncloud.android.lib.operations.common.RemoteOperationResult; | ||||||
| import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode; | import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode; | ||||||
| import com.owncloud.android.lib.operations.common.OCShare; | import com.owncloud.android.lib.operations.common.OCShare; | ||||||
|  | import com.owncloud.android.lib.utils.ShareUtils; | ||||||
| import com.owncloud.android.lib.utils.ShareXMLParser; | import com.owncloud.android.lib.utils.ShareXMLParser; | ||||||
| 
 | 
 | ||||||
| import android.util.Log; | import android.util.Log; | ||||||
| @ -55,9 +56,6 @@ public class GetRemoteSharesOperation extends RemoteOperation { | |||||||
| 
 | 
 | ||||||
| 	private static final String TAG = GetRemoteSharesOperation.class.getSimpleName(); | 	private static final String TAG = GetRemoteSharesOperation.class.getSimpleName(); | ||||||
| 
 | 
 | ||||||
| 	// OCS Route |  | ||||||
| 	private static final String SHAREAPI_ROUTE ="/ocs/v1.php/apps/files_sharing/api/v1/shares";  |  | ||||||
| 
 |  | ||||||
| 	private ArrayList<OCShare> mShares;  // List of shares for result | 	private ArrayList<OCShare> mShares;  // List of shares for result | ||||||
| 
 | 
 | ||||||
| 	 | 	 | ||||||
| @ -70,8 +68,8 @@ public class GetRemoteSharesOperation extends RemoteOperation { | |||||||
| 		int status = -1; | 		int status = -1; | ||||||
| 
 | 
 | ||||||
| 		// Get Method         | 		// Get Method         | ||||||
| 		GetMethod get = new GetMethod(client.getBaseUri() + SHAREAPI_ROUTE); | 		GetMethod get = new GetMethod(client.getBaseUri() + ShareUtils.SHAREAPI_ROUTE); | ||||||
| 		Log.d(TAG, "URL ------> " + client.getBaseUri() + SHAREAPI_ROUTE); | 		Log.d(TAG, "URL ------> " + client.getBaseUri() + ShareUtils.SHAREAPI_ROUTE); | ||||||
| 
 | 
 | ||||||
| 		// Get the response | 		// Get the response | ||||||
| 		try{ | 		try{ | ||||||
|  | |||||||
							
								
								
									
										39
									
								
								src/com/owncloud/android/lib/utils/ShareUtils.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								src/com/owncloud/android/lib/utils/ShareUtils.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | |||||||
|  | /* ownCloud Android Library is available under MIT license | ||||||
|  |  *   Copyright (C) 2014 ownCloud (http://www.owncloud.org/) | ||||||
|  |  *    | ||||||
|  |  *   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. | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package com.owncloud.android.lib.utils; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Contains Constants for Share Operation | ||||||
|  |  *  | ||||||
|  |  * @author masensio | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | public class ShareUtils { | ||||||
|  | 
 | ||||||
|  | 	// OCS Route | ||||||
|  | 	public static final String SHAREAPI_ROUTE ="/ocs/v1.php/apps/files_sharing/api/v1/shares";  | ||||||
|  | 
 | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user