summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/drive
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2018-06-18 14:43:56 +0900
committerGitHub <noreply@github.com>2018-06-18 14:43:56 +0900
commit5d3943ffa8cb4090c5c111397e266d255cc2212b (patch)
tree46f692fb21005bdc89499ea012c2436e8a2e90c0 /src/server/api/endpoints/drive
parentNew translations ja.yml (Spanish) (diff)
parentyatta (diff)
downloadmisskey-5d3943ffa8cb4090c5c111397e266d255cc2212b.tar.gz
misskey-5d3943ffa8cb4090c5c111397e266d255cc2212b.tar.bz2
misskey-5d3943ffa8cb4090c5c111397e266d255cc2212b.zip
Merge branch 'master' into l10n_master
Diffstat (limited to 'src/server/api/endpoints/drive')
-rw-r--r--src/server/api/endpoints/drive/files.ts12
-rw-r--r--src/server/api/endpoints/drive/files/create.ts6
-rw-r--r--src/server/api/endpoints/drive/files/delete.ts33
-rw-r--r--src/server/api/endpoints/drive/files/find.ts6
-rw-r--r--src/server/api/endpoints/drive/files/show.ts6
-rw-r--r--src/server/api/endpoints/drive/files/update.ts6
-rw-r--r--src/server/api/endpoints/drive/files/upload_from_url.ts3
-rw-r--r--src/server/api/endpoints/drive/folders.ts6
-rw-r--r--src/server/api/endpoints/drive/folders/create.ts6
-rw-r--r--src/server/api/endpoints/drive/folders/find.ts6
-rw-r--r--src/server/api/endpoints/drive/folders/show.ts6
-rw-r--r--src/server/api/endpoints/drive/folders/update.ts8
-rw-r--r--src/server/api/endpoints/drive/stream.ts6
13 files changed, 63 insertions, 47 deletions
diff --git a/src/server/api/endpoints/drive/files.ts b/src/server/api/endpoints/drive/files.ts
index ab4b18cef4..efce750747 100644
--- a/src/server/api/endpoints/drive/files.ts
+++ b/src/server/api/endpoints/drive/files.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import DriveFile, { pack } from '../../../../models/drive-file';
+import { ILocalUser } from '../../../../models/user';
/**
* Get drive files
*/
-module.exports = async (params, user, app) => {
+module.exports = async (params: any, user: ILocalUser) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) throw 'invalid limit param';
@@ -37,10 +35,13 @@ module.exports = async (params, user, app) => {
const sort = {
_id: -1
};
+
const query = {
'metadata.userId': user._id,
- 'metadata.folderId': folderId
+ 'metadata.folderId': folderId,
+ 'metadata.deletedAt': { $exists: false }
} as any;
+
if (sinceId) {
sort._id = 1;
query._id = {
@@ -51,6 +52,7 @@ module.exports = async (params, user, app) => {
$lt: untilId
};
}
+
if (type) {
query.contentType = new RegExp(`^${type.replace(/\*/g, '.+?')}$`);
}
diff --git a/src/server/api/endpoints/drive/files/create.ts b/src/server/api/endpoints/drive/files/create.ts
index dd748d6bba..db2626af09 100644
--- a/src/server/api/endpoints/drive/files/create.ts
+++ b/src/server/api/endpoints/drive/files/create.ts
@@ -1,15 +1,13 @@
-/**
- * Module dependencies
- */
import * as fs from 'fs';
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import { validateFileName, pack } from '../../../../../models/drive-file';
import create from '../../../../../services/drive/add-file';
+import { ILocalUser } from '../../../../../models/user';
/**
* Create a file
*/
-module.exports = async (file, params, user): Promise<any> => {
+module.exports = async (file: any, params: any, user: ILocalUser): Promise<any> => {
if (file == null) {
throw 'file is required';
}
diff --git a/src/server/api/endpoints/drive/files/delete.ts b/src/server/api/endpoints/drive/files/delete.ts
new file mode 100644
index 0000000000..17eb0eb4b9
--- /dev/null
+++ b/src/server/api/endpoints/drive/files/delete.ts
@@ -0,0 +1,33 @@
+import $ from 'cafy'; import ID from '../../../../../cafy-id';
+import DriveFile from '../../../../../models/drive-file';
+import del from '../../../../../services/drive/delete-file';
+import { publishDriveStream } from '../../../../../publishers/stream';
+import { ILocalUser } from '../../../../../models/user';
+
+/**
+ * Delete a file
+ */
+module.exports = async (params: any, user: ILocalUser) => {
+ // Get 'fileId' parameter
+ const [fileId, fileIdErr] = $.type(ID).get(params.fileId);
+ if (fileIdErr) throw 'invalid fileId param';
+
+ // Fetch file
+ const file = await DriveFile
+ .findOne({
+ _id: fileId,
+ 'metadata.userId': user._id
+ });
+
+ if (file === null) {
+ throw 'file-not-found';
+ }
+
+ // Delete
+ await del(file);
+
+ // Publish file_deleted event
+ publishDriveStream(user._id, 'file_deleted', file._id);
+
+ return;
+};
diff --git a/src/server/api/endpoints/drive/files/find.ts b/src/server/api/endpoints/drive/files/find.ts
index 98165990fe..75ab91f0a1 100644
--- a/src/server/api/endpoints/drive/files/find.ts
+++ b/src/server/api/endpoints/drive/files/find.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import DriveFile, { pack } from '../../../../../models/drive-file';
+import { ILocalUser } from '../../../../../models/user';
/**
* Find a file(s)
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (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');
diff --git a/src/server/api/endpoints/drive/files/show.ts b/src/server/api/endpoints/drive/files/show.ts
index c7efda7ab0..e7dca486c5 100644
--- a/src/server/api/endpoints/drive/files/show.ts
+++ b/src/server/api/endpoints/drive/files/show.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import DriveFile, { pack } from '../../../../../models/drive-file';
+import { ILocalUser } from '../../../../../models/user';
/**
* Show a file
*/
-module.exports = async (params, user) => {
+module.exports = async (params: any, user: ILocalUser) => {
// Get 'fileId' parameter
const [fileId, fileIdErr] = $.type(ID).get(params.fileId);
if (fileIdErr) throw 'invalid fileId param';
diff --git a/src/server/api/endpoints/drive/files/update.ts b/src/server/api/endpoints/drive/files/update.ts
index 12fa8e025d..825683b214 100644
--- a/src/server/api/endpoints/drive/files/update.ts
+++ b/src/server/api/endpoints/drive/files/update.ts
@@ -1,15 +1,13 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import DriveFolder from '../../../../../models/drive-folder';
import DriveFile, { validateFileName, pack } from '../../../../../models/drive-file';
import { publishDriveStream } from '../../../../../publishers/stream';
+import { ILocalUser } from '../../../../../models/user';
/**
* Update a file
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (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');
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 c012f0d3c9..cb617d851f 100644
--- a/src/server/api/endpoints/drive/files/upload_from_url.ts
+++ b/src/server/api/endpoints/drive/files/upload_from_url.ts
@@ -4,11 +4,12 @@
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import { pack } from '../../../../../models/drive-file';
import uploadFromUrl from '../../../../../services/drive/upload-from-url';
+import { ILocalUser } from '../../../../../models/user';
/**
* Create a file from a URL
*/
-module.exports = async (params, user): Promise<any> => {
+module.exports = async (params: any, user: ILocalUser): Promise<any> => {
// Get 'url' parameter
// TODO: Validate this url
const [url, urlErr] = $.str.get(params.url);
diff --git a/src/server/api/endpoints/drive/folders.ts b/src/server/api/endpoints/drive/folders.ts
index bc6c50eb99..3413778950 100644
--- a/src/server/api/endpoints/drive/folders.ts
+++ b/src/server/api/endpoints/drive/folders.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import DriveFolder, { pack } from '../../../../models/drive-folder';
+import { ILocalUser } from '../../../../models/user';
/**
* Get drive folders
*/
-module.exports = (params, user, app) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) return rej('invalid limit param');
diff --git a/src/server/api/endpoints/drive/folders/create.ts b/src/server/api/endpoints/drive/folders/create.ts
index 62e3b6f6e8..8f06b0f668 100644
--- a/src/server/api/endpoints/drive/folders/create.ts
+++ b/src/server/api/endpoints/drive/folders/create.ts
@@ -1,14 +1,12 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import DriveFolder, { isValidFolderName, pack } from '../../../../../models/drive-folder';
import { publishDriveStream } from '../../../../../publishers/stream';
+import { ILocalUser } from '../../../../../models/user';
/**
* Create drive folder
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'name' parameter
const [name = '無題のフォルダー', nameErr] = $.str.optional().pipe(isValidFolderName).get(params.name);
if (nameErr) return rej('invalid name param');
diff --git a/src/server/api/endpoints/drive/folders/find.ts b/src/server/api/endpoints/drive/folders/find.ts
index 9703d9e99d..b3238b5c32 100644
--- a/src/server/api/endpoints/drive/folders/find.ts
+++ b/src/server/api/endpoints/drive/folders/find.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import DriveFolder, { pack } from '../../../../../models/drive-folder';
+import { ILocalUser } from '../../../../../models/user';
/**
* Find a folder(s)
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (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');
diff --git a/src/server/api/endpoints/drive/folders/show.ts b/src/server/api/endpoints/drive/folders/show.ts
index 44f1889001..c9b4930a76 100644
--- a/src/server/api/endpoints/drive/folders/show.ts
+++ b/src/server/api/endpoints/drive/folders/show.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import DriveFolder, { pack } from '../../../../../models/drive-folder';
+import { ILocalUser } from '../../../../../models/user';
/**
* Show a folder
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'folderId' parameter
const [folderId, folderIdErr] = $.type(ID).get(params.folderId);
if (folderIdErr) return rej('invalid folderId param');
diff --git a/src/server/api/endpoints/drive/folders/update.ts b/src/server/api/endpoints/drive/folders/update.ts
index e24d8a14cd..f126c09f5b 100644
--- a/src/server/api/endpoints/drive/folders/update.ts
+++ b/src/server/api/endpoints/drive/folders/update.ts
@@ -1,14 +1,12 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import DriveFolder, { isValidFolderName, pack } from '../../../../../models/drive-folder';
import { publishDriveStream } from '../../../../../publishers/stream';
+import { ILocalUser } from '../../../../../models/user';
/**
* Update a folder
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'folderId' parameter
const [folderId, folderIdErr] = $.type(ID).get(params.folderId);
if (folderIdErr) return rej('invalid folderId param');
@@ -48,7 +46,7 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
}
// Check if the circular reference will occur
- async function checkCircle(folderId) {
+ async function checkCircle(folderId: any): Promise<boolean> {
// Fetch folder
const folder2 = await DriveFolder.findOne({
_id: folderId
diff --git a/src/server/api/endpoints/drive/stream.ts b/src/server/api/endpoints/drive/stream.ts
index 8cb3a99b42..515f74645a 100644
--- a/src/server/api/endpoints/drive/stream.ts
+++ b/src/server/api/endpoints/drive/stream.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import DriveFile, { pack } from '../../../../models/drive-file';
+import { ILocalUser } from '../../../../models/user';
/**
* Get drive stream
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) return rej('invalid limit param');