diff options
| author | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-04-03 23:45:13 +0900 |
|---|---|---|
| committer | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-04-04 00:09:00 +0900 |
| commit | fdc81f395d9555da1cdbc81dbe34970f3e683247 (patch) | |
| tree | 3c1119e200c3a594c719c848f9a5f50a242fcf03 /src/drive | |
| parent | Refactor (diff) | |
| download | sharkey-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.ts | 15 | ||||
| -rw-r--r-- | src/drive/upload-from-url.ts | 4 |
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) => { |