summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/drive
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-07-20 02:40:37 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-07-20 02:40:37 +0900
commitec2b1ec3f0035466585d9cc2a7842e519e14e31a (patch)
tree9a8e7c40e7b068d24b362a72552e456b1adddba7 /src/server/api/endpoints/drive
parent4.24.1 (diff)
downloadsharkey-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.ts10
-rw-r--r--src/server/api/endpoints/drive/files/update.ts59
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
}
});