#339 make duplication backwards compatible with old s3 links
This commit is contained in:
parent
94694c5a72
commit
40b3e26f24
3 changed files with 20 additions and 12 deletions
|
@ -21,6 +21,20 @@ function getExtension(filename) {
|
||||||
return (i < 0) ? '' : filename.substr(i);
|
return (i < 0) ? '' : filename.substr(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getObjectKey(url) {
|
||||||
|
const urlArray = url.split('/');
|
||||||
|
let objectKey;
|
||||||
|
if (urlArray.length === 6) {
|
||||||
|
const key = urlArray.pop();
|
||||||
|
const userId = urlArray.pop();
|
||||||
|
objectKey = `${userId}/${key}`
|
||||||
|
} else {
|
||||||
|
const key = urlArray.pop();
|
||||||
|
objectKey = key;
|
||||||
|
}
|
||||||
|
return objectKey;
|
||||||
|
}
|
||||||
|
|
||||||
export function deleteObjectsFromS3(keyList, callback) {
|
export function deleteObjectsFromS3(keyList, callback) {
|
||||||
const keys = keyList.map((key) => { return { Key: key }; }); // eslint-disable-line
|
const keys = keyList.map((key) => { return { Key: key }; }); // eslint-disable-line
|
||||||
if (keyList.length > 0) {
|
if (keyList.length > 0) {
|
||||||
|
@ -71,8 +85,7 @@ export function signS3(req, res) {
|
||||||
|
|
||||||
export function copyObjectInS3(req, res) {
|
export function copyObjectInS3(req, res) {
|
||||||
const url = req.body.url;
|
const url = req.body.url;
|
||||||
const objectKey = url.split('/').pop();
|
const objectKey = getObjectKey(url);
|
||||||
|
|
||||||
const fileExtension = getExtension(objectKey);
|
const fileExtension = getExtension(objectKey);
|
||||||
const newFilename = uuid.v4() + fileExtension;
|
const newFilename = uuid.v4() + fileExtension;
|
||||||
const params = {
|
const params = {
|
||||||
|
|
|
@ -3,7 +3,7 @@ import moment from 'moment';
|
||||||
|
|
||||||
import Project from '../models/project';
|
import Project from '../models/project';
|
||||||
import { resolvePathToFile } from '../utils/filePath';
|
import { resolvePathToFile } from '../utils/filePath';
|
||||||
import { deleteObjectsFromS3 } from './aws.controller';
|
import { deleteObjectsFromS3, getObjectKey } from './aws.controller';
|
||||||
|
|
||||||
// Bug -> timestamps don't get created, but it seems like this will
|
// Bug -> timestamps don't get created, but it seems like this will
|
||||||
// be fixed in mongoose soon
|
// be fixed in mongoose soon
|
||||||
|
@ -49,10 +49,8 @@ function deleteMany(files, ids) {
|
||||||
each(ids, (id, cb) => {
|
each(ids, (id, cb) => {
|
||||||
if (files.id(id).url) {
|
if (files.id(id).url) {
|
||||||
if (!process.env.S3_DATE || (process.env.S3_DATE && moment(process.env.S3_DATE) < moment(files.id(id).createdAt))) {
|
if (!process.env.S3_DATE || (process.env.S3_DATE && moment(process.env.S3_DATE) < moment(files.id(id).createdAt))) {
|
||||||
const urlComponents = files.id(id).url.split('/');
|
const objectKey = getObjectKey(files.id(id).url);
|
||||||
const key = urlComponents.pop();
|
objectKeys.push(objectKey);
|
||||||
const userId = urlComponents.pop();
|
|
||||||
objectKeys.push(`${userId}/${key}`);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
files.id(id).remove();
|
files.id(id).remove();
|
||||||
|
|
|
@ -3,7 +3,7 @@ import request from 'request';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import Project from '../models/project';
|
import Project from '../models/project';
|
||||||
import User from '../models/user';
|
import User from '../models/user';
|
||||||
import { deleteObjectsFromS3 } from './aws.controller';
|
import { deleteObjectsFromS3, getObjectKey } from './aws.controller';
|
||||||
|
|
||||||
export function createProject(req, res) {
|
export function createProject(req, res) {
|
||||||
if (!req.user) {
|
if (!req.user) {
|
||||||
|
@ -101,10 +101,7 @@ function deleteFilesFromS3(files) {
|
||||||
return false;
|
return false;
|
||||||
})
|
})
|
||||||
.map((file) => {
|
.map((file) => {
|
||||||
const urlComponents = file.url.split('/');
|
return getObjectKey(file.url);
|
||||||
const key = urlComponents.pop();
|
|
||||||
const userId = urlComponents.pop();
|
|
||||||
return `${userId}/${key}`;
|
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue