123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = exports.FilesController = void 0;
- var _cryptoUtils = require("../cryptoUtils");
- var _AdaptableController = _interopRequireDefault(require("./AdaptableController"));
- var _FilesAdapter = require("../Adapters/Files/FilesAdapter");
- var _path = _interopRequireDefault(require("path"));
- var _mime = _interopRequireDefault(require("mime"));
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
- const Parse = require('parse').Parse;
- const legacyFilesRegex = new RegExp('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}-.*');
- class FilesController extends _AdaptableController.default {
- getFileData(config, filename) {
- return this.adapter.getFileData(filename);
- }
- async createFile(config, filename, data, contentType, options) {
- const extname = _path.default.extname(filename);
- const hasExtension = extname.length > 0;
- if (!hasExtension && contentType && _mime.default.getExtension(contentType)) {
- filename = filename + '.' + _mime.default.getExtension(contentType);
- } else if (hasExtension && !contentType) {
- contentType = _mime.default.getType(filename);
- }
- if (!this.options.preserveFileName) {
- filename = (0, _cryptoUtils.randomHexString)(32) + '_' + filename;
- }
- const location = await this.adapter.getFileLocation(config, filename);
- await this.adapter.createFile(filename, data, contentType, options);
- return {
- url: location,
- name: filename
- };
- }
- deleteFile(config, filename) {
- return this.adapter.deleteFile(filename);
- }
- getMetadata(filename) {
- if (typeof this.adapter.getMetadata === 'function') {
- return this.adapter.getMetadata(filename);
- }
- return Promise.resolve({});
- }
-
- async expandFilesInObject(config, object) {
- if (object instanceof Array) {
- const promises = object.map(obj => this.expandFilesInObject(config, obj));
- await Promise.all(promises);
- return;
- }
- if (typeof object !== 'object') {
- return;
- }
- for (const key in object) {
- const fileObject = object[key];
- if (fileObject && fileObject['__type'] === 'File') {
- if (fileObject['url']) {
- continue;
- }
- const filename = fileObject['name'];
-
-
-
- if (config.fileKey === undefined) {
- fileObject['url'] = await this.adapter.getFileLocation(config, filename);
- } else {
- if (filename.indexOf('tfss-') === 0) {
- fileObject['url'] = 'http://files.parsetfss.com/' + config.fileKey + '/' + encodeURIComponent(filename);
- } else if (legacyFilesRegex.test(filename)) {
- fileObject['url'] = 'http://files.parse.com/' + config.fileKey + '/' + encodeURIComponent(filename);
- } else {
- fileObject['url'] = await this.adapter.getFileLocation(config, filename);
- }
- }
- }
- }
- }
- expectedAdapterType() {
- return _FilesAdapter.FilesAdapter;
- }
- handleFileStream(config, filename, req, res, contentType) {
- return this.adapter.handleFileStream(filename, req, res, contentType);
- }
- validateFilename(filename) {
- if (typeof this.adapter.validateFilename === 'function') {
- const error = this.adapter.validateFilename(filename);
- if (typeof error !== 'string') {
- return error;
- }
- return new Parse.Error(Parse.Error.INVALID_FILE_NAME, error);
- }
- return (0, _FilesAdapter.validateFilename)(filename);
- }
- }
- exports.FilesController = FilesController;
- var _default = exports.default = FilesController;
|