From 65518cdd6466c1fe43f47dd5e4a0e0da9d5bab52 Mon Sep 17 00:00:00 2001 From: Patrick Pelletier Date: Tue, 7 Jun 2016 15:59:45 -0700 Subject: [PATCH] Support file objects in the legacy bucket: files.parse.com --- spec/ParseFile.spec.js | 22 +++++++++++++++++++++- src/Controllers/FilesController.js | 7 +++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/spec/ParseFile.spec.js b/spec/ParseFile.spec.js index 20c751947e..0e1db6a3c7 100644 --- a/spec/ParseFile.spec.js +++ b/spec/ParseFile.spec.js @@ -491,7 +491,7 @@ describe('Parse.File testing', () => { }); }); - it('creates correct url for old files hosted on parse', done => { + it('creates correct url for old files hosted on files.parsetfss.com', done => { var file = { __type: 'File', url: 'http://irrelevant.elephant/', @@ -511,6 +511,26 @@ describe('Parse.File testing', () => { }); }); + it('creates correct url for old files hosted on files.parse.com', done => { + var file = { + __type: 'File', + url: 'http://irrelevant.elephant/', + name: 'd6e80979-a128-4c57-a167-302f874700dc-123.txt' + }; + var obj = new Parse.Object('OldFileTest'); + obj.set('oldfile', file); + obj.save().then(() => { + var query = new Parse.Query('OldFileTest'); + return query.first(); + }).then((result) => { + var fileAgain = result.get('oldfile'); + expect(fileAgain.url()).toEqual( + 'http://files.parse.com/test/d6e80979-a128-4c57-a167-302f874700dc-123.txt' + ); + done(); + }); + }); + it('supports files in objects without urls', done => { var file = { __type: 'File', diff --git a/src/Controllers/FilesController.js b/src/Controllers/FilesController.js index 77bd043322..3cea4ddbe4 100644 --- a/src/Controllers/FilesController.js +++ b/src/Controllers/FilesController.js @@ -6,6 +6,8 @@ import { FilesAdapter } from '../Adapters/Files/FilesAdapter'; import path from 'path'; import mime from 'mime'; +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}-.*"); + export class FilesController extends AdaptableController { getFileData(config, filename) { @@ -59,8 +61,13 @@ export class FilesController extends AdaptableController { continue; } let filename = fileObject['name']; + // all filenames starting with "tfss-" should be from files.parsetfss.com + // all filenames starting with a "-" seperated UUID should be from files.parse.com + // all other filenames have been migrated or created from Parse Server 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'] = this.adapter.getFileLocation(config, filename); }