summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/drive/files
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-11-02 03:32:24 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-11-02 03:32:24 +0900
commit931bdc6aace5e7aa71ffdfb470e208ead78a2a53 (patch)
treeeee6d7bf5f5480b883bb601517b4d9db03f31e9f /src/server/api/endpoints/drive/files
parentRefactoring (diff)
downloadsharkey-931bdc6aace5e7aa71ffdfb470e208ead78a2a53.tar.gz
sharkey-931bdc6aace5e7aa71ffdfb470e208ead78a2a53.tar.bz2
sharkey-931bdc6aace5e7aa71ffdfb470e208ead78a2a53.zip
Refactoring, Clean up and bug fixes
Diffstat (limited to 'src/server/api/endpoints/drive/files')
-rw-r--r--src/server/api/endpoints/drive/files/attached_notes.ts8
-rw-r--r--src/server/api/endpoints/drive/files/check_existence.ts5
-rw-r--r--src/server/api/endpoints/drive/files/create.ts20
-rw-r--r--src/server/api/endpoints/drive/files/delete.ts8
-rw-r--r--src/server/api/endpoints/drive/files/find.ts36
-rw-r--r--src/server/api/endpoints/drive/files/show.ts8
-rw-r--r--src/server/api/endpoints/drive/files/update.ts30
-rw-r--r--src/server/api/endpoints/drive/files/upload_from_url.ts33
8 files changed, 89 insertions, 59 deletions
diff --git a/src/server/api/endpoints/drive/files/attached_notes.ts b/src/server/api/endpoints/drive/files/attached_notes.ts
index 1187169c64..ad9a2370b1 100644
--- a/src/server/api/endpoints/drive/files/attached_notes.ts
+++ b/src/server/api/endpoints/drive/files/attached_notes.ts
@@ -1,4 +1,4 @@
-import $ from 'cafy'; import ID from '../../../../../misc/cafy-id';
+import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id';
import DriveFile from '../../../../../models/drive-file';
import { ILocalUser } from '../../../../../models/user';
import getParams from '../../../get-params';
@@ -17,12 +17,14 @@ export const meta = {
kind: 'drive-read',
params: {
- fileId: $.type(ID).note({
+ fileId: {
+ validator: $.type(ID),
+ transform: transform,
desc: {
'ja-JP': '対象のファイルID',
'en-US': 'Target file ID'
}
- })
+ }
}
};
diff --git a/src/server/api/endpoints/drive/files/check_existence.ts b/src/server/api/endpoints/drive/files/check_existence.ts
index a024701655..407c7d5530 100644
--- a/src/server/api/endpoints/drive/files/check_existence.ts
+++ b/src/server/api/endpoints/drive/files/check_existence.ts
@@ -13,11 +13,12 @@ export const meta = {
kind: 'drive-read',
params: {
- md5: $.str.note({
+ md5: {
+ validator: $.str,
desc: {
'ja-JP': 'ファイルのMD5ハッシュ'
}
- })
+ }
}
};
diff --git a/src/server/api/endpoints/drive/files/create.ts b/src/server/api/endpoints/drive/files/create.ts
index 2fa4c65846..2653eba655 100644
--- a/src/server/api/endpoints/drive/files/create.ts
+++ b/src/server/api/endpoints/drive/files/create.ts
@@ -1,6 +1,6 @@
import * as fs from 'fs';
const ms = require('ms');
-import $ from 'cafy'; import ID from '../../../../../misc/cafy-id';
+import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id';
import { validateFileName, pack } from '../../../../../models/drive-file';
import create from '../../../../../services/drive/add-file';
import { ILocalUser } from '../../../../../models/user';
@@ -24,27 +24,31 @@ export const meta = {
kind: 'drive-write',
params: {
- folderId: $.type(ID).optional.nullable.note({
- default: null,
+ folderId: {
+ validator: $.type(ID).optional.nullable,
+ transform: transform,
+ default: null as any,
desc: {
'ja-JP': 'フォルダID'
}
- }),
+ },
- isSensitive: $.bool.optional.note({
+ isSensitive: {
+ validator: $.bool.optional,
default: false,
desc: {
'ja-JP': 'このメディアが「閲覧注意」(NSFW)かどうか',
'en-US': 'Whether this media is NSFW'
}
- }),
+ },
- force: $.bool.optional.note({
+ force: {
+ validator: $.bool.optional,
default: false,
desc: {
'ja-JP': 'true にすると、同じハッシュを持つファイルが既にアップロードされていても強制的にファイルを作成します。',
}
- })
+ }
}
};
diff --git a/src/server/api/endpoints/drive/files/delete.ts b/src/server/api/endpoints/drive/files/delete.ts
index fc6849e57e..af7e192655 100644
--- a/src/server/api/endpoints/drive/files/delete.ts
+++ b/src/server/api/endpoints/drive/files/delete.ts
@@ -1,4 +1,4 @@
-import $ from 'cafy'; import ID from '../../../../../misc/cafy-id';
+import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id';
import DriveFile from '../../../../../models/drive-file';
import del from '../../../../../services/drive/delete-file';
import { publishDriveStream } from '../../../../../stream';
@@ -18,12 +18,14 @@ export const meta = {
kind: 'drive-write',
params: {
- fileId: $.type(ID).note({
+ fileId: {
+ validator: $.type(ID),
+ transform: transform,
desc: {
'ja-JP': '対象のファイルID',
'en-US': 'Target file ID'
}
- })
+ }
}
};
diff --git a/src/server/api/endpoints/drive/files/find.ts b/src/server/api/endpoints/drive/files/find.ts
index aa44ee688e..0ac110c110 100644
--- a/src/server/api/endpoints/drive/files/find.ts
+++ b/src/server/api/endpoints/drive/files/find.ts
@@ -1,31 +1,39 @@
-import $ from 'cafy'; import ID from '../../../../../misc/cafy-id';
+import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id';
import DriveFile, { pack } from '../../../../../models/drive-file';
import { ILocalUser } from '../../../../../models/user';
+import getParams from '../../../get-params';
export const meta = {
requireCredential: true,
- kind: 'drive-read'
+ kind: 'drive-read',
+
+ params: {
+ name: {
+ validator: $.str
+ },
+
+ folderId: {
+ validator: $.type(ID).optional.nullable,
+ transform: transform,
+ default: null as any,
+ desc: {
+ 'ja-JP': 'フォルダID'
+ }
+ },
+ }
};
export default (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
- // Get 'name' parameter
- const [name, nameErr] = $.str.get(params.name);
- if (nameErr) return rej('invalid name param');
-
- // Get 'folderId' parameter
- const [folderId = null, folderIdErr] = $.type(ID).optional.nullable.get(params.folderId);
- if (folderIdErr) return rej('invalid folderId param');
+ const [ps, psErr] = getParams(meta, params);
+ if (psErr) return rej(psErr);
- // Issue query
const files = await DriveFile
.find({
filename: name,
'metadata.userId': user._id,
- 'metadata.folderId': folderId
+ 'metadata.folderId': ps.folderId
});
- // Serialize
- res(await Promise.all(files.map(async file =>
- await pack(file))));
+ res(await Promise.all(files.map(file => pack(file))));
});
diff --git a/src/server/api/endpoints/drive/files/show.ts b/src/server/api/endpoints/drive/files/show.ts
index 49d6027add..ce0812c508 100644
--- a/src/server/api/endpoints/drive/files/show.ts
+++ b/src/server/api/endpoints/drive/files/show.ts
@@ -1,4 +1,4 @@
-import $ from 'cafy'; import ID from '../../../../../misc/cafy-id';
+import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id';
import DriveFile, { pack } from '../../../../../models/drive-file';
import { ILocalUser } from '../../../../../models/user';
import getParams from '../../../get-params';
@@ -16,12 +16,14 @@ export const meta = {
kind: 'drive-read',
params: {
- fileId: $.type(ID).note({
+ fileId: {
+ validator: $.type(ID),
+ transform: transform,
desc: {
'ja-JP': '対象のファイルID',
'en-US': 'Target file ID'
}
- })
+ }
}
};
diff --git a/src/server/api/endpoints/drive/files/update.ts b/src/server/api/endpoints/drive/files/update.ts
index 915cf4ceb2..7c335e5bc6 100644
--- a/src/server/api/endpoints/drive/files/update.ts
+++ b/src/server/api/endpoints/drive/files/update.ts
@@ -1,4 +1,4 @@
-import $ from 'cafy'; import ID from '../../../../../misc/cafy-id';
+import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id';
import DriveFolder from '../../../../../models/drive-folder';
import DriveFile, { validateFileName, pack } from '../../../../../models/drive-file';
import { publishDriveStream } from '../../../../../stream';
@@ -17,34 +17,40 @@ export const meta = {
kind: 'drive-write',
params: {
- fileId: $.type(ID).note({
+ fileId: {
+ validator: $.type(ID),
+ transform: transform,
desc: {
'ja-JP': '対象のファイルID'
}
- }),
+ },
- folderId: $.type(ID).optional.nullable.note({
- default: undefined,
+ folderId: {
+ validator: $.type(ID).optional.nullable,
+ transform: transform,
+ default: undefined as any,
desc: {
'ja-JP': 'フォルダID'
}
- }),
+ },
- name: $.str.optional.pipe(validateFileName).note({
- default: undefined,
+ name: {
+ validator: $.str.optional.pipe(validateFileName),
+ default: undefined as any,
desc: {
'ja-JP': 'ファイル名',
'en-US': 'Name of the file'
}
- }),
+ },
- isSensitive: $.bool.optional.note({
- default: undefined,
+ isSensitive: {
+ validator: $.bool.optional,
+ default: undefined as any,
desc: {
'ja-JP': 'このメディアが「閲覧注意」(NSFW)かどうか',
'en-US': 'Whether this media is NSFW'
}
- })
+ }
}
};
diff --git a/src/server/api/endpoints/drive/files/upload_from_url.ts b/src/server/api/endpoints/drive/files/upload_from_url.ts
index 783646feb3..3d19725275 100644
--- a/src/server/api/endpoints/drive/files/upload_from_url.ts
+++ b/src/server/api/endpoints/drive/files/upload_from_url.ts
@@ -1,8 +1,9 @@
-import $ from 'cafy'; import ID from '../../../../../misc/cafy-id';
+import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id';
const ms = require('ms');
import { pack } from '../../../../../models/drive-file';
import uploadFromUrl from '../../../../../services/drive/upload-from-url';
import { ILocalUser } from '../../../../../models/user';
+import getParams from '../../../get-params';
export const meta = {
desc: {
@@ -16,21 +17,25 @@ export const meta = {
requireCredential: true,
- kind: 'drive-write'
+ kind: 'drive-write',
+
+ params: {
+ url: {
+ // TODO: Validate this url
+ validator: $.str,
+ },
+
+ folderId: {
+ validator: $.type(ID).optional.nullable,
+ default: null as any as any,
+ transform: transform
+ },
+ }
};
-/**
- * Create a file from a URL
- */
export default async (params: any, user: ILocalUser): Promise<any> => {
- // Get 'url' parameter
- // TODO: Validate this url
- const [url, urlErr] = $.str.get(params.url);
- if (urlErr) throw 'invalid url param';
-
- // Get 'folderId' parameter
- const [folderId = null, folderIdErr] = $.type(ID).optional.nullable.get(params.folderId);
- if (folderIdErr) throw 'invalid folderId param';
+ const [ps, psErr] = getParams(meta, params);
+ if (psErr) throw psErr;
- return pack(await uploadFromUrl(url, user, folderId));
+ return pack(await uploadFromUrl(ps.url, user, ps.folderId));
};