summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/admin
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2019-02-22 11:46:58 +0900
committerGitHub <noreply@github.com>2019-02-22 11:46:58 +0900
commit2756f553c68082342a784ef716c62da6cea6f3ca (patch)
tree1e0364ca9ddc1fd88e311f0687746f44e007effd /src/server/api/endpoints/admin
parentUpdate CHANGELOG.md (diff)
downloadsharkey-2756f553c68082342a784ef716c62da6cea6f3ca.tar.gz
sharkey-2756f553c68082342a784ef716c62da6cea6f3ca.tar.bz2
sharkey-2756f553c68082342a784ef716c62da6cea6f3ca.zip
Improve error handling of API (#4345)
* wip * wip * wip * Update attached_notes.ts * wip * Refactor * wip * wip * wip * wip * wip * wip * wip * wip * Update call.ts * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * :v: * Fix
Diffstat (limited to 'src/server/api/endpoints/admin')
-rw-r--r--src/server/api/endpoints/admin/abuse-user-reports.ts10
-rw-r--r--src/server/api/endpoints/admin/drive/files.ts6
-rw-r--r--src/server/api/endpoints/admin/drive/show-file.ts17
-rw-r--r--src/server/api/endpoints/admin/emoji/add.ts8
-rw-r--r--src/server/api/endpoints/admin/emoji/list.ts8
-rw-r--r--src/server/api/endpoints/admin/emoji/remove.ts8
-rw-r--r--src/server/api/endpoints/admin/emoji/update.ts8
-rw-r--r--src/server/api/endpoints/admin/federation/remove-all-following.ts6
-rw-r--r--src/server/api/endpoints/admin/federation/update-instance.ts8
-rw-r--r--src/server/api/endpoints/admin/invite.ts8
-rw-r--r--src/server/api/endpoints/admin/moderators/add.ts8
-rw-r--r--src/server/api/endpoints/admin/moderators/remove.ts8
-rw-r--r--src/server/api/endpoints/admin/queue/clear.ts6
-rw-r--r--src/server/api/endpoints/admin/remove-abuse-user-report.ts8
-rw-r--r--src/server/api/endpoints/admin/reset-password.ts20
-rw-r--r--src/server/api/endpoints/admin/show-user.ts10
-rw-r--r--src/server/api/endpoints/admin/show-users.ts6
-rw-r--r--src/server/api/endpoints/admin/silence-user.ts10
-rw-r--r--src/server/api/endpoints/admin/suspend-user.ts20
-rw-r--r--src/server/api/endpoints/admin/unsilence-user.ts8
-rw-r--r--src/server/api/endpoints/admin/unsuspend-user.ts16
-rw-r--r--src/server/api/endpoints/admin/unverify-user.ts16
-rw-r--r--src/server/api/endpoints/admin/update-meta.ts6
-rw-r--r--src/server/api/endpoints/admin/update-remote-user.ts7
-rw-r--r--src/server/api/endpoints/admin/verify-user.ts16
25 files changed, 129 insertions, 123 deletions
diff --git a/src/server/api/endpoints/admin/abuse-user-reports.ts b/src/server/api/endpoints/admin/abuse-user-reports.ts
index fc95dd4bb1..602171abb8 100644
--- a/src/server/api/endpoints/admin/abuse-user-reports.ts
+++ b/src/server/api/endpoints/admin/abuse-user-reports.ts
@@ -25,11 +25,7 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
- if (ps.sinceId && ps.untilId) {
- return rej('cannot set sinceId and untilId');
- }
-
+export default define(meta, async (ps) => {
const sort = {
_id: -1
};
@@ -51,5 +47,5 @@ export default define(meta, (ps) => new Promise(async (res, rej) => {
sort: sort
});
- res(await packMany(reports));
-}));
+ return await packMany(reports);
+});
diff --git a/src/server/api/endpoints/admin/drive/files.ts b/src/server/api/endpoints/admin/drive/files.ts
index 3a837e4189..318b2de1b2 100644
--- a/src/server/api/endpoints/admin/drive/files.ts
+++ b/src/server/api/endpoints/admin/drive/files.ts
@@ -46,7 +46,7 @@ const sort: any = { // < https://github.com/Microsoft/TypeScript/issues/1863
[fallback]: { _id: -1 }
};
-export default define(meta, (ps, me) => new Promise(async (res, rej) => {
+export default define(meta, async (ps, me) => {
const q = {
'metadata.deletedAt': { $exists: false },
} as any;
@@ -61,5 +61,5 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => {
skip: ps.offset
});
- res(await packMany(files, { detail: true, withUser: true, self: true }));
-}));
+ return await packMany(files, { detail: true, withUser: true, self: true });
+});
diff --git a/src/server/api/endpoints/admin/drive/show-file.ts b/src/server/api/endpoints/admin/drive/show-file.ts
index 6dfab19643..9b993584eb 100644
--- a/src/server/api/endpoints/admin/drive/show-file.ts
+++ b/src/server/api/endpoints/admin/drive/show-file.ts
@@ -2,6 +2,7 @@ import $ from 'cafy';
import ID, { transform } from '../../../../../misc/cafy-id';
import define from '../../../define';
import DriveFile from '../../../../../models/drive-file';
+import { ApiError } from '../../../error';
export const meta = {
requireCredential: true,
@@ -12,17 +13,25 @@ export const meta = {
validator: $.type(ID),
transform: transform,
},
+ },
+
+ errors: {
+ noSuchFile: {
+ message: 'No such file.',
+ code: 'NO_SUCH_FILE',
+ id: 'caf3ca38-c6e5-472e-a30c-b05377dcc240'
+ }
}
};
-export default define(meta, (ps, me) => new Promise(async (res, rej) => {
+export default define(meta, async (ps, me) => {
const file = await DriveFile.findOne({
_id: ps.fileId
});
if (file == null) {
- return rej('file not found');
+ throw new ApiError(meta.errors.noSuchFile);
}
- res(file);
-}));
+ return file;
+});
diff --git a/src/server/api/endpoints/admin/emoji/add.ts b/src/server/api/endpoints/admin/emoji/add.ts
index cab3841649..b84e9d34d6 100644
--- a/src/server/api/endpoints/admin/emoji/add.ts
+++ b/src/server/api/endpoints/admin/emoji/add.ts
@@ -26,7 +26,7 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const emoji = await Emoji.insert({
updatedAt: new Date(),
name: ps.name,
@@ -35,7 +35,7 @@ export default define(meta, (ps) => new Promise(async (res, rej) => {
url: ps.url
});
- res({
+ return {
id: emoji._id
- });
-}));
+ };
+});
diff --git a/src/server/api/endpoints/admin/emoji/list.ts b/src/server/api/endpoints/admin/emoji/list.ts
index 624fa7845c..f51a536fab 100644
--- a/src/server/api/endpoints/admin/emoji/list.ts
+++ b/src/server/api/endpoints/admin/emoji/list.ts
@@ -18,16 +18,16 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const emojis = await Emoji.find({
host: ps.host
});
- res(emojis.map(e => ({
+ return emojis.map(e => ({
id: e._id,
name: e.name,
aliases: e.aliases,
host: e.host,
url: e.url
- })));
-}));
+ }));
+});
diff --git a/src/server/api/endpoints/admin/emoji/remove.ts b/src/server/api/endpoints/admin/emoji/remove.ts
index 1d6ed11b63..9699a00121 100644
--- a/src/server/api/endpoints/admin/emoji/remove.ts
+++ b/src/server/api/endpoints/admin/emoji/remove.ts
@@ -18,14 +18,14 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const emoji = await Emoji.findOne({
_id: ps.id
});
- if (emoji == null) return rej('emoji not found');
+ if (emoji == null) throw new Error('emoji not found');
await Emoji.remove({ _id: emoji._id });
- res();
-}));
+ return;
+});
diff --git a/src/server/api/endpoints/admin/emoji/update.ts b/src/server/api/endpoints/admin/emoji/update.ts
index cbcc07fd48..7d065eaddb 100644
--- a/src/server/api/endpoints/admin/emoji/update.ts
+++ b/src/server/api/endpoints/admin/emoji/update.ts
@@ -30,12 +30,12 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const emoji = await Emoji.findOne({
_id: ps.id
});
- if (emoji == null) return rej('emoji not found');
+ if (emoji == null) throw new Error('emoji not found');
await Emoji.update({ _id: emoji._id }, {
$set: {
@@ -46,5 +46,5 @@ export default define(meta, (ps) => new Promise(async (res, rej) => {
}
});
- res();
-}));
+ return;
+});
diff --git a/src/server/api/endpoints/admin/federation/remove-all-following.ts b/src/server/api/endpoints/admin/federation/remove-all-following.ts
index 8daff139b2..1a272aeb05 100644
--- a/src/server/api/endpoints/admin/federation/remove-all-following.ts
+++ b/src/server/api/endpoints/admin/federation/remove-all-following.ts
@@ -15,7 +15,7 @@ export const meta = {
}
};
-export default define(meta, (ps, me) => new Promise(async (res, rej) => {
+export default define(meta, async (ps, me) => {
const followings = await Following.find({
'_follower.host': ps.host
});
@@ -29,5 +29,5 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => {
deleteFollowing(pair[0], pair[1]);
}
- res();
-}));
+ return;
+});
diff --git a/src/server/api/endpoints/admin/federation/update-instance.ts b/src/server/api/endpoints/admin/federation/update-instance.ts
index 579b437aa1..50eb4ba135 100644
--- a/src/server/api/endpoints/admin/federation/update-instance.ts
+++ b/src/server/api/endpoints/admin/federation/update-instance.ts
@@ -21,11 +21,11 @@ export const meta = {
}
};
-export default define(meta, (ps, me) => new Promise(async (res, rej) => {
+export default define(meta, async (ps, me) => {
const instance = await Instance.findOne({ host: ps.host });
if (instance == null) {
- return rej('instance not found');
+ throw new Error('instance not found');
}
Instance.update({ host: ps.host }, {
@@ -35,5 +35,5 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => {
}
});
- res();
-}));
+ return;
+});
diff --git a/src/server/api/endpoints/admin/invite.ts b/src/server/api/endpoints/admin/invite.ts
index ebfcb84452..3c2b323498 100644
--- a/src/server/api/endpoints/admin/invite.ts
+++ b/src/server/api/endpoints/admin/invite.ts
@@ -13,7 +13,7 @@ export const meta = {
params: {}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const code = rndstr({ length: 5, chars: '0-9' });
await RegistrationTicket.insert({
@@ -21,7 +21,7 @@ export default define(meta, (ps) => new Promise(async (res, rej) => {
code: code
});
- res({
+ return {
code: code
- });
-}));
+ };
+});
diff --git a/src/server/api/endpoints/admin/moderators/add.ts b/src/server/api/endpoints/admin/moderators/add.ts
index 4b4675c566..58515381d0 100644
--- a/src/server/api/endpoints/admin/moderators/add.ts
+++ b/src/server/api/endpoints/admin/moderators/add.ts
@@ -24,13 +24,13 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const user = await User.findOne({
_id: ps.userId
});
if (user == null) {
- return rej('user not found');
+ throw new Error('user not found');
}
await User.update({
@@ -41,5 +41,5 @@ export default define(meta, (ps) => new Promise(async (res, rej) => {
}
});
- res();
-}));
+ return;
+});
diff --git a/src/server/api/endpoints/admin/moderators/remove.ts b/src/server/api/endpoints/admin/moderators/remove.ts
index 2b9da61bb5..75627fb631 100644
--- a/src/server/api/endpoints/admin/moderators/remove.ts
+++ b/src/server/api/endpoints/admin/moderators/remove.ts
@@ -24,13 +24,13 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const user = await User.findOne({
_id: ps.userId
});
if (user == null) {
- return rej('user not found');
+ throw new Error('user not found');
}
await User.update({
@@ -41,5 +41,5 @@ export default define(meta, (ps) => new Promise(async (res, rej) => {
}
});
- res();
-}));
+ return;
+});
diff --git a/src/server/api/endpoints/admin/queue/clear.ts b/src/server/api/endpoints/admin/queue/clear.ts
index 4da8d2c72d..9a1e565955 100644
--- a/src/server/api/endpoints/admin/queue/clear.ts
+++ b/src/server/api/endpoints/admin/queue/clear.ts
@@ -8,8 +8,8 @@ export const meta = {
params: {}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
destroy();
- res();
-}));
+ return;
+});
diff --git a/src/server/api/endpoints/admin/remove-abuse-user-report.ts b/src/server/api/endpoints/admin/remove-abuse-user-report.ts
index 4d068a410e..c0c40c85da 100644
--- a/src/server/api/endpoints/admin/remove-abuse-user-report.ts
+++ b/src/server/api/endpoints/admin/remove-abuse-user-report.ts
@@ -15,18 +15,18 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const report = await AbuseUserReport.findOne({
_id: ps.reportId
});
if (report == null) {
- return rej('report not found');
+ throw new Error('report not found');
}
await AbuseUserReport.remove({
_id: report._id
});
- res();
-}));
+ return;
+});
diff --git a/src/server/api/endpoints/admin/reset-password.ts b/src/server/api/endpoints/admin/reset-password.ts
index c072c12e0d..b274dc2a7d 100644
--- a/src/server/api/endpoints/admin/reset-password.ts
+++ b/src/server/api/endpoints/admin/reset-password.ts
@@ -25,17 +25,17 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const user = await User.findOne({
_id: ps.userId
});
if (user == null) {
- return rej('user not found');
+ throw new Error('user not found');
}
if (user.isAdmin) {
- return rej('cannot reset password of admin');
+ throw new Error('cannot reset password of admin');
}
const passwd = rndstr('a-zA-Z0-9', 8);
@@ -46,12 +46,12 @@ export default define(meta, (ps) => new Promise(async (res, rej) => {
await User.findOneAndUpdate({
_id: user._id
}, {
- $set: {
- password: hash
- }
- });
+ $set: {
+ password: hash
+ }
+ });
- res({
+ return {
password: passwd
- });
-}));
+ };
+});
diff --git a/src/server/api/endpoints/admin/show-user.ts b/src/server/api/endpoints/admin/show-user.ts
index 490b685352..5fcf4c3867 100644
--- a/src/server/api/endpoints/admin/show-user.ts
+++ b/src/server/api/endpoints/admin/show-user.ts
@@ -23,18 +23,18 @@ export const meta = {
}
};
-export default define(meta, (ps, me) => new Promise(async (res, rej) => {
+export default define(meta, async (ps, me) => {
const user = await User.findOne({
_id: ps.userId
});
if (user == null) {
- return rej('user not found');
+ throw new Error('user not found');
}
if (me.isModerator && user.isAdmin) {
- return rej('cannot show info of admin');
+ throw new Error('cannot show info of admin');
}
- res(user);
-}));
+ return user;
+});
diff --git a/src/server/api/endpoints/admin/show-users.ts b/src/server/api/endpoints/admin/show-users.ts
index 3646f96d7d..9d1c5ea986 100644
--- a/src/server/api/endpoints/admin/show-users.ts
+++ b/src/server/api/endpoints/admin/show-users.ts
@@ -63,7 +63,7 @@ const sort: any = { // < https://github.com/Microsoft/TypeScript/issues/1863
[fallback]: { _id: -1 }
};
-export default define(meta, (ps, me) => new Promise(async (res, rej) => {
+export default define(meta, async (ps, me) => {
const q = {
$and: []
} as any;
@@ -99,5 +99,5 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => {
skip: ps.offset
});
- res(await Promise.all(users.map(user => pack(user, me, { detail: true }))));
-}));
+ return await Promise.all(users.map(user => pack(user, me, { detail: true })));
+});
diff --git a/src/server/api/endpoints/admin/silence-user.ts b/src/server/api/endpoints/admin/silence-user.ts
index 7b1090a895..532025563f 100644
--- a/src/server/api/endpoints/admin/silence-user.ts
+++ b/src/server/api/endpoints/admin/silence-user.ts
@@ -24,17 +24,17 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const user = await User.findOne({
_id: ps.userId
});
if (user == null) {
- return rej('user not found');
+ throw new Error('user not found');
}
if (user.isAdmin) {
- return rej('cannot silence admin');
+ throw new Error('cannot silence admin');
}
await User.findOneAndUpdate({
@@ -45,5 +45,5 @@ export default define(meta, (ps) => new Promise(async (res, rej) => {
}
});
- res();
-}));
+ return;
+});
diff --git a/src/server/api/endpoints/admin/suspend-user.ts b/src/server/api/endpoints/admin/suspend-user.ts
index 2ec5196880..321c3955e6 100644
--- a/src/server/api/endpoints/admin/suspend-user.ts
+++ b/src/server/api/endpoints/admin/suspend-user.ts
@@ -24,30 +24,30 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const user = await User.findOne({
_id: ps.userId
});
if (user == null) {
- return rej('user not found');
+ throw new Error('user not found');
}
if (user.isAdmin) {
- return rej('cannot suspend admin');
+ throw new Error('cannot suspend admin');
}
if (user.isModerator) {
- return rej('cannot suspend moderator');
+ throw new Error('cannot suspend moderator');
}
await User.findOneAndUpdate({
_id: user._id
}, {
- $set: {
- isSuspended: true
- }
- });
+ $set: {
+ isSuspended: true
+ }
+ });
- res();
-}));
+ return;
+});
diff --git a/src/server/api/endpoints/admin/unsilence-user.ts b/src/server/api/endpoints/admin/unsilence-user.ts
index a01bfbb6d2..bb039eb8da 100644
--- a/src/server/api/endpoints/admin/unsilence-user.ts
+++ b/src/server/api/endpoints/admin/unsilence-user.ts
@@ -24,13 +24,13 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const user = await User.findOne({
_id: ps.userId
});
if (user == null) {
- return rej('user not found');
+ throw new Error('user not found');
}
await User.findOneAndUpdate({
@@ -41,5 +41,5 @@ export default define(meta, (ps) => new Promise(async (res, rej) => {
}
});
- res();
-}));
+ return;
+});
diff --git a/src/server/api/endpoints/admin/unsuspend-user.ts b/src/server/api/endpoints/admin/unsuspend-user.ts
index 4b53246264..4732e44369 100644
--- a/src/server/api/endpoints/admin/unsuspend-user.ts
+++ b/src/server/api/endpoints/admin/unsuspend-user.ts
@@ -24,22 +24,22 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const user = await User.findOne({
_id: ps.userId
});
if (user == null) {
- return rej('user not found');
+ throw new Error('user not found');
}
await User.findOneAndUpdate({
_id: user._id
}, {
- $set: {
- isSuspended: false
- }
- });
+ $set: {
+ isSuspended: false
+ }
+ });
- res();
-}));
+ return;
+});
diff --git a/src/server/api/endpoints/admin/unverify-user.ts b/src/server/api/endpoints/admin/unverify-user.ts
index 3e044ffed7..857cceb1ec 100644
--- a/src/server/api/endpoints/admin/unverify-user.ts
+++ b/src/server/api/endpoints/admin/unverify-user.ts
@@ -24,22 +24,22 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const user = await User.findOne({
_id: ps.userId
});
if (user == null) {
- return rej('user not found');
+ throw new Error('user not found');
}
await User.findOneAndUpdate({
_id: user._id
}, {
- $set: {
- isVerified: false
- }
- });
+ $set: {
+ isVerified: false
+ }
+ });
- res();
-}));
+ return;
+});
diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts
index da2ee36927..1fb87d0a98 100644
--- a/src/server/api/endpoints/admin/update-meta.ts
+++ b/src/server/api/endpoints/admin/update-meta.ts
@@ -323,7 +323,7 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const set = {} as any;
if (ps.broadcasts) {
@@ -506,5 +506,5 @@ export default define(meta, (ps) => new Promise(async (res, rej) => {
$set: set
}, { upsert: true });
- res();
-}));
+ return;
+});
diff --git a/src/server/api/endpoints/admin/update-remote-user.ts b/src/server/api/endpoints/admin/update-remote-user.ts
index 9288ce1fb7..8d1db33ba4 100644
--- a/src/server/api/endpoints/admin/update-remote-user.ts
+++ b/src/server/api/endpoints/admin/update-remote-user.ts
@@ -26,9 +26,10 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise((res, rej) => {
- updatePersonById(ps.userId).then(() => res(), e => rej(e));
-}));
+export default define(meta, async (ps) => {
+ await updatePersonById(ps.userId);
+ return;
+});
async function updatePersonById(userId: mongo.ObjectID) {
const user = await getRemoteUser(userId);
diff --git a/src/server/api/endpoints/admin/verify-user.ts b/src/server/api/endpoints/admin/verify-user.ts
index 996e044d18..77db8e6e60 100644
--- a/src/server/api/endpoints/admin/verify-user.ts
+++ b/src/server/api/endpoints/admin/verify-user.ts
@@ -24,22 +24,22 @@ export const meta = {
}
};
-export default define(meta, (ps) => new Promise(async (res, rej) => {
+export default define(meta, async (ps) => {
const user = await User.findOne({
_id: ps.userId
});
if (user == null) {
- return rej('user not found');
+ throw new Error('user not found');
}
await User.findOneAndUpdate({
_id: user._id
}, {
- $set: {
- isVerified: true
- }
- });
+ $set: {
+ isVerified: true
+ }
+ });
- res();
-}));
+ return;
+});