text: // FilesController.js
  import { Parse } from 'parse/node';
  import { randomHexString } from '../cryptoUtils';
  import AdaptableController from './AdaptableController';
  import { FilesAdapter } from '../Adapters/Files/FilesAdapter';
  import path  from 'path';
  import mime from 'mime';
  
  export class FilesController extends AdaptableController {
  
    getFileData(config, filename) {
      return this.adapter.getFileData(config, filename);
    }
  
    createFile(config, filename, data, contentType) {
  
      let extname = path.extname(filename);
  
      const hasExtension = extname.length > 0;
  
      if (!hasExtension && contentType && mime.extension(contentType)) {
        filename = filename + '.' + mime.extension(contentType);
      } else if (hasExtension && !contentType) {
        contentType = mime.lookup(filename);
      }
  
      filename = randomHexString(32) + '_' + filename;
  
      var location = this.adapter.getFileLocation(config, filename);
      return this.adapter.createFile(config, filename, data, contentType).then(() => {
        return Promise.resolve({
          url: location,
          name: filename
        });
      });
    }
  
    deleteFile(config, filename) {
      return this.adapter.deleteFile(config, filename);
    }
  
    /**
     * Find file references in REST-format object and adds the url key
     * with the current mount point and app id.
     * Object may be a single object or list of REST-format objects.
     */
    expandFilesInObject(config, object) {
      if (object instanceof Array) {
        object.map((obj) => this.expandFilesInObject(config, obj));
        return;
      }
      if (typeof object !== 'object') {
        return;
      }
      for (let key in object) {
        let fileObject = object[key];
        if (fileObject && fileObject['__type'] === 'File') {
          if (fileObject['url']) {
            continue;
          }
          let filename = fileObject['name'];
          if (filename.indexOf('tfss-') === 0) {
            fileObject['url'] = 'http://files.parsetfss.com/' + config.fileKey + '/' + encodeURIComponent(filename);
          } else {
            fileObject['url'] = this.adapter.getFileLocation(config, filename);
          }
        }
      }
    }
  
    expectedAdapterType() {
      return FilesAdapter;
    }
  }
  
  export default FilesController;
  