From fdc81f395d9555da1cdbc81dbe34970f3e683247 Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Tue, 3 Apr 2018 23:45:13 +0900 Subject: Enforce URI uniquness --- src/drive/add-file.ts | 15 +++++++++++---- src/drive/upload-from-url.ts | 4 ++-- 2 files changed, 13 insertions(+), 6 deletions(-) (limited to 'src/drive') 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 => { +export default async (url, user, folderId = null, uri = null): Promise => { 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 => { .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) => { -- cgit v1.2.3-freya