mirror of
				https://github.com/telekom-security/tpotce.git
				synced 2025-10-26 02:04:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			120 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| /*
 | |
|  * 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;
 | |
| })();
 | 
