Skip to content

Commit 7257ee8

Browse files
committed
Moves some logic from FilesRouter to FilesController for content-type and filename
1 parent 78d380d commit 7257ee8

File tree

3 files changed

+19
-18
lines changed

3 files changed

+19
-18
lines changed

src/Adapters/Files/GridStoreAdapter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export class GridStoreAdapter extends FilesAdapter {
2828

2929
// For a given config object, filename, and data, store a file
3030
// Returns a promise
31-
createFile(config, filename: string, data, contentType: string) {
31+
createFile(config, filename: string, data, contentType) {
3232
return this._connect().then(database => {
3333
let gridStore = new GridStore(database, filename, 'w');
3434
return gridStore.open();

src/Controllers/FilesController.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { Parse } from 'parse/node';
33
import { randomHexString } from '../cryptoUtils';
44
import AdaptableController from './AdaptableController';
55
import { FilesAdapter } from '../Adapters/Files/FilesAdapter';
6+
import path from 'path';
7+
import mime from 'mime';
68

79
export class FilesController extends AdaptableController {
810

@@ -11,7 +13,19 @@ export class FilesController extends AdaptableController {
1113
}
1214

1315
createFile(config, filename, data, contentType) {
16+
17+
let extname = path.extname(filename);
18+
19+
const hasExtension = extname.length > 0;
20+
21+
if (!hasExtension && contentType && mime.extension(contentType)) {
22+
filename = filename + '.' + mime.extension(contentType);
23+
} else if (hasExtension && !contentType) {
24+
contentType = mime.lookup(filename);
25+
}
26+
1427
filename = randomHexString(32) + '_' + filename;
28+
1529
var location = this.adapter.getFileLocation(config, filename);
1630
return this.adapter.createFile(config, filename, data, contentType).then(() => {
1731
return Promise.resolve({

src/Routers/FilesRouter.js

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ import express from 'express';
22
import BodyParser from 'body-parser';
33
import * as Middlewares from '../middlewares';
44
import { randomHexString } from '../cryptoUtils';
5-
import mime from 'mime';
65
import Config from '../Config';
7-
import path from 'path';
6+
import mime from 'mime';
87

98
export class FilesRouter {
109

@@ -42,7 +41,7 @@ export class FilesRouter {
4241
var contentType = mime.lookup(filename);
4342
res.set('Content-Type', contentType);
4443
res.end(data);
45-
}).catch(() => {
44+
}).catch((err) => {
4645
res.status(404);
4746
res.set('Content-Type', 'text/plain');
4847
res.end('File not found.');
@@ -68,20 +67,8 @@ export class FilesRouter {
6867
return;
6968
}
7069

71-
let filename = req.params.filename;
72-
73-
// safe way to get the extension
74-
let extname = path.extname(filename);
75-
let contentType = req.get('Content-type');
76-
77-
const hasExtension = extname.length > 0;
78-
79-
if (!hasExtension && contentType && mime.extension(contentType)) {
80-
filename = filename + '.' + mime.extension(contentType);
81-
} else if (hasExtension && !contentType) {
82-
contentType = mime.lookup(req.params.filename);
83-
}
84-
70+
const filename = req.params.filename;
71+
const contentType = req.get('Content-type');
8572
const config = req.config;
8673
const filesController = config.filesController;
8774

0 commit comments

Comments
 (0)