mirror of
				https://github.com/telekom-security/tpotce.git
				synced 2025-07-02 01:27:27 -04:00 
			
		
		
		
	
		
			
	
	
		
			121 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			121 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | /* | ||
|  |  * Copyright (c) 2017 | ||
|  |  * | ||
|  |  * This file is licensed under the Affero General Public License version 3 | ||
|  |  * or later. | ||
|  |  * | ||
|  |  * See the COPYING-README file. | ||
|  |  * | ||
|  |  */ | ||
|  | 
 | ||
|  | (function() { | ||
|  | 	/** | ||
|  | 	 * @class OC.Share.ShareModel | ||
|  | 	 * @classdesc | ||
|  | 	 * | ||
|  | 	 * Represents a single share. | ||
|  | 	 */ | ||
|  | 	var ShareModel = OC.Backbone.Model.extend({ | ||
|  | 
 | ||
|  | 		url: function() { | ||
|  | 			var params = { | ||
|  | 				format: 'json' | ||
|  | 			}; | ||
|  | 			var idPart = ''; | ||
|  | 			// note: unsaved new models have no ids at first but need a POST URL | ||
|  | 			if (!_.isUndefined(this.id)) { | ||
|  | 				idPart = '/' + encodeURIComponent(this.id); | ||
|  | 			} | ||
|  | 			return OC.linkToOCS('apps/files_sharing/api/v1', 2) + | ||
|  | 				'shares' + | ||
|  | 				idPart + | ||
|  | 				'?' + OC.buildQueryString(params); | ||
|  | 		}, | ||
|  | 
 | ||
|  | 		parse: function(data) { | ||
|  | 			/* jshint camelcase: false */ | ||
|  | 			if (data.ocs && data.ocs.data) { | ||
|  | 				// parse out of the ocs response | ||
|  | 				data = data.ocs.data; | ||
|  | 			} | ||
|  | 
 | ||
|  | 			// parse the non-camel to camel | ||
|  | 			if (data.share_type === OC.Share.SHARE_TYPE_LINK) { | ||
|  | 				// store password in a separate attribute as we don't | ||
|  | 				// want to re-save it like this | ||
|  | 				data.encryptedPassword = data.share_with; | ||
|  | 				delete data.share_with; | ||
|  | 				delete data.file_target; | ||
|  | 				delete data.mail_send; | ||
|  | 				delete data.share_with_displayname; | ||
|  | 			} | ||
|  | 
 | ||
|  | 			data.itemSource = data.item_source; | ||
|  | 			delete data.item_source; | ||
|  | 			data.itemType = data.item_type; | ||
|  | 			delete data.item_type; | ||
|  | 			data.shareType = data.share_type; | ||
|  | 			delete data.share_type; | ||
|  | 
 | ||
|  | 			// convert the inconsistency... (read as expiration, saved as expireDate...) | ||
|  | 			if (data.expiration && !data.expireDate) { | ||
|  | 				data.expireDate = data.expiration; | ||
|  | 			} | ||
|  | 			if (_.isUndefined(data.expireDate)) { | ||
|  | 				data.expireDate = null; | ||
|  | 			} | ||
|  | 
 | ||
|  | 			// remove unrelated/unneeded attributes, | ||
|  | 			delete data.expiration; | ||
|  | 			delete data.url; | ||
|  | 
 | ||
|  | 			// these can be read from the parent object or fileinfo | ||
|  | 			delete data.displayname_file_owner; | ||
|  | 			delete data.displayname_owner; | ||
|  | 			delete data.file_parent; | ||
|  | 			delete data.path; | ||
|  | 			delete data.storage; | ||
|  | 			delete data.storage_id; | ||
|  | 			delete data.uid_file_owner; | ||
|  | 			delete data.uid_owner; | ||
|  | 			delete data.mimetype; | ||
|  | 			delete data.parent; | ||
|  | 
 | ||
|  | 			return data; | ||
|  | 		}, | ||
|  | 
 | ||
|  | 		canRead: function() { | ||
|  | 			return (this.get('permissions') & OC.PERMISSION_READ) > 0; | ||
|  | 		}, | ||
|  | 
 | ||
|  | 		canUpdate: function() { | ||
|  | 			return (this.get('permissions') & OC.PERMISSION_UPDATE) > 0; | ||
|  | 		}, | ||
|  | 
 | ||
|  | 		canDelete: function() { | ||
|  | 			return (this.get('permissions') & OC.PERMISSION_DELETE) > 0; | ||
|  | 		}, | ||
|  | 
 | ||
|  | 		canCreate: function() { | ||
|  | 			return (this.get('permissions') & OC.PERMISSION_CREATE) > 0; | ||
|  | 		}, | ||
|  | 
 | ||
|  | 		canShare: function() { | ||
|  | 			return (this.get('permissions') & OC.PERMISSION_SHARE) > 0; | ||
|  | 		}, | ||
|  | 
 | ||
|  | 		/** | ||
|  | 		 * Returns the absolute link share | ||
|  | 		 * | ||
|  | 		 * @return {String} link | ||
|  | 		 */ | ||
|  | 		getLink: function() { | ||
|  | 			var base = OC.getProtocol() + '://' + OC.getHost(); | ||
|  | 			return base + OC.generateUrl('/s/') + this.get('token'); | ||
|  | 		} | ||
|  | 	}); | ||
|  | 
 | ||
|  | 	OC.Share = OC.Share || {}; | ||
|  | 	OC.Share.ShareModel = ShareModel; | ||
|  | })(); |