diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-07-20 02:40:37 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-07-20 02:40:37 +0900 |
| commit | ec2b1ec3f0035466585d9cc2a7842e519e14e31a (patch) | |
| tree | 9a8e7c40e7b068d24b362a72552e456b1adddba7 /src/server/api/endpoints/drive | |
| parent | 4.24.1 (diff) | |
| download | sharkey-ec2b1ec3f0035466585d9cc2a7842e519e14e31a.tar.gz sharkey-ec2b1ec3f0035466585d9cc2a7842e519e14e31a.tar.bz2 sharkey-ec2b1ec3f0035466585d9cc2a7842e519e14e31a.zip | |
#1334
Diffstat (limited to 'src/server/api/endpoints/drive')
| -rw-r--r-- | src/server/api/endpoints/drive/files/create.ts | 10 | ||||
| -rw-r--r-- | src/server/api/endpoints/drive/files/update.ts | 59 |
2 files changed, 52 insertions, 17 deletions
diff --git a/src/server/api/endpoints/drive/files/create.ts b/src/server/api/endpoints/drive/files/create.ts index ca12be9104..1c5506f6c4 100644 --- a/src/server/api/endpoints/drive/files/create.ts +++ b/src/server/api/endpoints/drive/files/create.ts @@ -29,6 +29,14 @@ export const meta = { desc: { ja: 'フォルダID' } + }), + + isSensitive: $.bool.optional.note({ + default: false, + desc: { + ja: 'このメディアが「閲覧注意」(NSFW)かどうか', + en: 'Whether this media is NSFW' + } }) } }; @@ -68,7 +76,7 @@ export default async (file: any, params: any, user: ILocalUser): Promise<any> => try { // Create file - const driveFile = await create(user, file.path, name, null, ps.folderId); + const driveFile = await create(user, file.path, name, null, ps.folderId, false, false, null, null, ps.isSensitive); cleanup(); diff --git a/src/server/api/endpoints/drive/files/update.ts b/src/server/api/endpoints/drive/files/update.ts index 396bc97694..bac04bae78 100644 --- a/src/server/api/endpoints/drive/files/update.ts +++ b/src/server/api/endpoints/drive/files/update.ts @@ -3,6 +3,7 @@ import DriveFolder from '../../../../../models/drive-folder'; import DriveFile, { validateFileName, pack } from '../../../../../models/drive-file'; import { publishDriveStream } from '../../../../../stream'; import { ILocalUser } from '../../../../../models/user'; +import getParams from '../../../get-params'; export const meta = { desc: { @@ -12,18 +13,48 @@ export const meta = { requireCredential: true, - kind: 'drive-write' + kind: 'drive-write', + + params: { + fileId: $.type(ID).note({ + desc: { + ja: '対象のファイルID' + } + }), + + folderId: $.type(ID).optional.nullable.note({ + default: undefined, + desc: { + ja: 'フォルダID' + } + }), + + name: $.str.optional.pipe(validateFileName).note({ + default: undefined, + desc: { + ja: 'ファイル名', + en: 'Name of the file' + } + }), + + isSensitive: $.bool.optional.note({ + default: undefined, + desc: { + ja: 'このメディアが「閲覧注意」(NSFW)かどうか', + en: 'Whether this media is NSFW' + } + }) + } }; export default (params: any, user: ILocalUser) => new Promise(async (res, rej) => { - // Get 'fileId' parameter - const [fileId, fileIdErr] = $.type(ID).get(params.fileId); - if (fileIdErr) return rej('invalid fileId param'); + const [ps, psErr] = getParams(meta, params); + if (psErr) return rej(psErr); // Fetch file const file = await DriveFile .findOne({ - _id: fileId, + _id: ps.fileId, 'metadata.userId': user._id }); @@ -31,23 +62,18 @@ export default (params: any, user: ILocalUser) => new Promise(async (res, rej) = return rej('file-not-found'); } - // Get 'name' parameter - const [name, nameErr] = $.str.optional.pipe(validateFileName).get(params.name); - if (nameErr) return rej('invalid name param'); - if (name) file.filename = name; + if (ps.name) file.filename = ps.name; - // Get 'folderId' parameter - const [folderId, folderIdErr] = $.type(ID).optional.nullable.get(params.folderId); - if (folderIdErr) return rej('invalid folderId param'); + if (ps.isSensitive) file.metadata.isSensitive = ps.isSensitive; - if (folderId !== undefined) { - if (folderId === null) { + if (ps.folderId !== undefined) { + if (ps.folderId === null) { file.metadata.folderId = null; } else { // Fetch folder const folder = await DriveFolder .findOne({ - _id: folderId, + _id: ps.folderId, userId: user._id }); @@ -62,7 +88,8 @@ export default (params: any, user: ILocalUser) => new Promise(async (res, rej) = await DriveFile.update(file._id, { $set: { filename: file.filename, - 'metadata.folderId': file.metadata.folderId + 'metadata.folderId': file.metadata.folderId, + 'metadata.isSensitive': file.metadata.isSensitive } }); |