summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/drive
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2018-10-08 15:37:24 +0900
committerGitHub <noreply@github.com>2018-10-08 15:37:24 +0900
commit9c170c426be01773afb15a9868ff3c278e09409c (patch)
tree0229bb52dd9197308d193f4e41bbc11d3dcb95a1 /src/server/api/endpoints/drive
parentNew translations ja-JP.yml (Norwegian) (diff)
parentfix(package): update @types/mongodb to version 3.1.10 (#2849) (diff)
downloadmisskey-9c170c426be01773afb15a9868ff3c278e09409c.tar.gz
misskey-9c170c426be01773afb15a9868ff3c278e09409c.tar.bz2
misskey-9c170c426be01773afb15a9868ff3c278e09409c.zip
Merge branch 'develop' into l10n_develop
Diffstat (limited to 'src/server/api/endpoints/drive')
-rw-r--r--src/server/api/endpoints/drive/files.ts5
-rw-r--r--src/server/api/endpoints/drive/files/check_existence.ts38
-rw-r--r--src/server/api/endpoints/drive/files/create.ts4
-rw-r--r--src/server/api/endpoints/drive/files/update.ts13
-rw-r--r--src/server/api/endpoints/drive/stream.ts4
5 files changed, 57 insertions, 7 deletions
diff --git a/src/server/api/endpoints/drive/files.ts b/src/server/api/endpoints/drive/files.ts
index dc6a602e10..de0bde086b 100644
--- a/src/server/api/endpoints/drive/files.ts
+++ b/src/server/api/endpoints/drive/files.ts
@@ -1,5 +1,5 @@
import $ from 'cafy'; import ID from '../../../../misc/cafy-id';
-import DriveFile, { pack } from '../../../../models/drive-file';
+import DriveFile, { packMany } from '../../../../models/drive-file';
import { ILocalUser } from '../../../../models/user';
export const meta = {
@@ -73,6 +73,5 @@ export default async (params: any, user: ILocalUser) => {
});
// Serialize
- const _files = await Promise.all(files.map(file => pack(file)));
- return _files;
+ return await packMany(files);
};
diff --git a/src/server/api/endpoints/drive/files/check_existence.ts b/src/server/api/endpoints/drive/files/check_existence.ts
new file mode 100644
index 0000000000..73d75b7caf
--- /dev/null
+++ b/src/server/api/endpoints/drive/files/check_existence.ts
@@ -0,0 +1,38 @@
+import $ from 'cafy';
+import DriveFile, { pack } from '../../../../../models/drive-file';
+import { ILocalUser } from '../../../../../models/user';
+
+export const meta = {
+ desc: {
+ 'ja-JP': '与えられたMD5ハッシュ値を持つファイルがドライブに存在するかどうかを返します。',
+ 'en-US': 'Returns whether the file with the given MD5 hash exists in the user\'s drive.'
+ },
+
+ requireCredential: true,
+
+ kind: 'drive-read',
+
+ params: {
+ md5: $.str.note({
+ desc: {
+ 'ja-JP': 'ファイルのMD5ハッシュ'
+ }
+ })
+ }
+};
+
+export default (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
+ const [md5, md5Err] = $.str.get(params.md5);
+ if (md5Err) return rej('invalid md5 param');
+
+ const file = await DriveFile.findOne({
+ md5: md5,
+ 'metadata.userId': user._id
+ });
+
+ if (file === null) {
+ res({ file: null });
+ } else {
+ res({ file: await pack(file) });
+ }
+});
diff --git a/src/server/api/endpoints/drive/files/create.ts b/src/server/api/endpoints/drive/files/create.ts
index dfbd11d0c2..4b5ffa90e0 100644
--- a/src/server/api/endpoints/drive/files/create.ts
+++ b/src/server/api/endpoints/drive/files/create.ts
@@ -31,8 +31,8 @@ export const meta = {
}
}),
- isSensitive: $.bool.optional.note({
- default: false,
+ isSensitive: $.bool.optional.nullable.note({
+ default: null,
desc: {
'ja-JP': 'このメディアが「閲覧注意」(NSFW)かどうか',
'en-US': 'Whether this media is NSFW'
diff --git a/src/server/api/endpoints/drive/files/update.ts b/src/server/api/endpoints/drive/files/update.ts
index ba9abfec61..3c7932c341 100644
--- a/src/server/api/endpoints/drive/files/update.ts
+++ b/src/server/api/endpoints/drive/files/update.ts
@@ -4,6 +4,7 @@ import DriveFile, { validateFileName, pack } from '../../../../../models/drive-f
import { publishDriveStream } from '../../../../../stream';
import { ILocalUser } from '../../../../../models/user';
import getParams from '../../../get-params';
+import Note from '../../../../../models/note';
export const meta = {
desc: {
@@ -93,6 +94,18 @@ export default (params: any, user: ILocalUser) => new Promise(async (res, rej) =
}
});
+ // ドライブのファイルが非正規化されているドキュメントも更新
+ Note.find({
+ '_files._id': file._id
+ }).then(notes => {
+ notes.forEach(note => {
+ note._files[note._files.findIndex(f => f._id.equals(file._id))] = file;
+ Note.findOneAndUpdate({ _id: note._id }, {
+ _files: note._files
+ });
+ });
+ });
+
// Serialize
const fileObj = await pack(file);
diff --git a/src/server/api/endpoints/drive/stream.ts b/src/server/api/endpoints/drive/stream.ts
index a9f3f7e9a5..3ac7dd0234 100644
--- a/src/server/api/endpoints/drive/stream.ts
+++ b/src/server/api/endpoints/drive/stream.ts
@@ -1,5 +1,5 @@
import $ from 'cafy'; import ID from '../../../../misc/cafy-id';
-import DriveFile, { pack } from '../../../../models/drive-file';
+import DriveFile, { packMany } from '../../../../models/drive-file';
import { ILocalUser } from '../../../../models/user';
export const meta = {
@@ -63,5 +63,5 @@ export default (params: any, user: ILocalUser) => new Promise(async (res, rej) =
});
// Serialize
- res(await Promise.all(files.map(file => pack(file))));
+ res(await packMany(files));
});