nextcloud/core/js/files/fileinfo.js

144 lines
2.2 KiB
JavaScript

/*
* Copyright (c) 2015
*
* This file is licensed under the Affero General Public License version 3
* or later.
*
* See the COPYING-README file.
*
*/
(function(OC) {
/**
* @class OC.Files.FileInfo
* @classdesc File information
*
* @param {Object} data file data, see attributes for details
*
* @since 8.2
*/
var FileInfo = function(data) {
if (!_.isUndefined(data.id)) {
this.id = parseInt(data.id, 10);
}
// TODO: normalize path
this.path = data.path || '';
this.name = data.name;
this.mtime = data.mtime;
this.etag = data.etag;
this.permissions = data.permissions;
this.size = data.size;
this.mimetype = data.mimetype || 'application/octet-stream';
this.mountType = data.mountType;
this.icon = data.icon;
this._props = data._props;
if (data.type) {
this.type = data.type;
} else if (this.mimetype === 'httpd/unix-directory') {
this.type = 'dir';
} else {
this.type = 'file';
}
if (!this.mimetype) {
if (this.type === 'dir') {
this.mimetype = 'httpd/unix-directory';
} else {
this.mimetype = 'application/octet-stream';
}
}
};
/**
* @memberof OC.Files
*/
FileInfo.prototype = {
/**
* File id
*
* @type int
*/
id: null,
/**
* File name
*
* @type String
*/
name: null,
/**
* Path leading to the file, without the file name,
* and with a leading slash.
*
* @type String
*/
path: null,
/**
* Mime type
*
* @type String
*/
mimetype: null,
/**
* Icon URL.
*
* Can be used to override the mime type icon.
*
* @type String
*/
icon: null,
/**
* File type. 'file' for files, 'dir' for directories.
*
* @type String
* @deprecated rely on mimetype instead
*/
type: 'file',
/**
* Permissions.
*
* @see OC#PERMISSION_ALL for permissions
* @type int
*/
permissions: null,
/**
* Modification time
*
* @type int
*/
mtime: null,
/**
* Etag
*
* @type String
*/
etag: null,
/**
* Mount type.
*
* One of null, "external-root", "shared" or "shared-root"
*
* @type string
*/
mountType: null
};
if (!OC.Files) {
OC.Files = {};
}
OC.Files.FileInfo = FileInfo;
})(OC);