summaryrefslogtreecommitdiff
path: root/src/drive
diff options
context:
space:
mode:
authorAkihiko Odaki <nekomanma@pixiv.co.jp>2018-04-03 23:45:13 +0900
committerAkihiko Odaki <nekomanma@pixiv.co.jp>2018-04-04 00:09:00 +0900
commitfdc81f395d9555da1cdbc81dbe34970f3e683247 (patch)
tree3c1119e200c3a594c719c848f9a5f50a242fcf03 /src/drive
parentRefactor (diff)
downloadsharkey-fdc81f395d9555da1cdbc81dbe34970f3e683247.tar.gz
sharkey-fdc81f395d9555da1cdbc81dbe34970f3e683247.tar.bz2
sharkey-fdc81f395d9555da1cdbc81dbe34970f3e683247.zip
Enforce URI uniquness
Diffstat (limited to 'src/drive')
-rw-r--r--src/drive/add-file.ts15
-rw-r--r--src/drive/upload-from-url.ts4
2 files changed, 13 insertions, 6 deletions
diff --git a/src/drive/add-file.ts b/src/drive/add-file.ts
index f48fada7eb..24eb5208d5 100644
--- a/src/drive/add-file.ts
+++ b/src/drive/add-file.ts
@@ -10,7 +10,7 @@ import * as debug from 'debug';
import fileType = require('file-type');
import prominence = require('prominence');
-import DriveFile, { getGridFSBucket } from '../models/drive-file';
+import DriveFile, { IMetadata, getGridFSBucket } from '../models/drive-file';
import DriveFolder from '../models/drive-folder';
import { pack } from '../models/drive-file';
import event, { publishDriveStream } from '../publishers/stream';
@@ -45,7 +45,8 @@ const addFile = async (
name: string = null,
comment: string = null,
folderId: mongodb.ObjectID = null,
- force: boolean = false
+ force: boolean = false,
+ uri: string = null
) => {
log(`registering ${name} (user: ${getAcct(user)}, path: ${path})`);
@@ -224,12 +225,18 @@ const addFile = async (
properties['avgColor'] = averageColor;
}
- return addToGridFS(detectedName, readable, mime, {
+ const metadata = {
userId: user._id,
folderId: folder !== null ? folder._id : null,
comment: comment,
properties: properties
- });
+ } as IMetadata;
+
+ if (uri !== null) {
+ metadata.uri = uri;
+ }
+
+ return addToGridFS(detectedName, readable, mime, metadata);
};
/**
diff --git a/src/drive/upload-from-url.ts b/src/drive/upload-from-url.ts
index 7ff16e9e4d..f96af0f266 100644
--- a/src/drive/upload-from-url.ts
+++ b/src/drive/upload-from-url.ts
@@ -8,7 +8,7 @@ import * as request from 'request';
const log = debug('misskey:common:drive:upload_from_url');
-export default async (url, user, folderId = null): Promise<IDriveFile> => {
+export default async (url, user, folderId = null, uri = null): Promise<IDriveFile> => {
let name = URL.parse(url).pathname.split('/').pop();
if (!validateFileName(name)) {
name = null;
@@ -35,7 +35,7 @@ export default async (url, user, folderId = null): Promise<IDriveFile> => {
.on('error', rej);
});
- const driveFile = await create(user, path, name, null, folderId);
+ const driveFile = await create(user, path, name, null, folderId, false, uri);
// clean-up
fs.unlink(path, (e) => {