mirror of
				https://github.com/telekom-security/tpotce.git
				synced 2025-11-03 22:12:53 +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;
 | 
						|
})();
 |