diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2019-02-22 11:46:58 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-02-22 11:46:58 +0900 |
| commit | 2756f553c68082342a784ef716c62da6cea6f3ca (patch) | |
| tree | 1e0364ca9ddc1fd88e311f0687746f44e007effd /src/server/api/endpoints/users/lists | |
| parent | Update CHANGELOG.md (diff) | |
| download | misskey-2756f553c68082342a784ef716c62da6cea6f3ca.tar.gz misskey-2756f553c68082342a784ef716c62da6cea6f3ca.tar.bz2 misskey-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/users/lists')
| -rw-r--r-- | src/server/api/endpoints/users/lists/create.ts | 8 | ||||
| -rw-r--r-- | src/server/api/endpoints/users/lists/delete.ts | 17 | ||||
| -rw-r--r-- | src/server/api/endpoints/users/lists/list.ts | 7 | ||||
| -rw-r--r-- | src/server/api/endpoints/users/lists/pull.ts | 25 | ||||
| -rw-r--r-- | src/server/api/endpoints/users/lists/push.ts | 33 | ||||
| -rw-r--r-- | src/server/api/endpoints/users/lists/show.ts | 17 | ||||
| -rw-r--r-- | src/server/api/endpoints/users/lists/update.ts | 19 |
7 files changed, 89 insertions, 37 deletions
diff --git a/src/server/api/endpoints/users/lists/create.ts b/src/server/api/endpoints/users/lists/create.ts index d93cf13d94..a3d91b6c25 100644 --- a/src/server/api/endpoints/users/lists/create.ts +++ b/src/server/api/endpoints/users/lists/create.ts @@ -19,8 +19,7 @@ export const meta = { } }; -export default define(meta, (ps, user) => new Promise(async (res, rej) => { - // insert +export default define(meta, async (ps, user) => { const userList = await UserList.insert({ createdAt: new Date(), userId: user._id, @@ -28,6 +27,5 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => { userIds: [] }); - // Response - res(await pack(userList)); -})); + return await pack(userList); +}); diff --git a/src/server/api/endpoints/users/lists/delete.ts b/src/server/api/endpoints/users/lists/delete.ts index 8d297198c9..6aaf4701d4 100644 --- a/src/server/api/endpoints/users/lists/delete.ts +++ b/src/server/api/endpoints/users/lists/delete.ts @@ -2,6 +2,7 @@ import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id'; import UserList from '../../../../../models/user-list'; import define from '../../../define'; +import { ApiError } from '../../../error'; export const meta = { desc: { @@ -22,22 +23,28 @@ export const meta = { 'en-US': 'ID of target user list' } } + }, + + errors: { + noSuchList: { + message: 'No such list.', + code: 'NO_SUCH_LIST', + id: '78436795-db79-42f5-b1e2-55ea2cf19166' + } } }; -export default define(meta, (ps, user) => new Promise(async (res, rej) => { +export default define(meta, async (ps, user) => { const userList = await UserList.findOne({ _id: ps.listId, userId: user._id }); if (userList == null) { - return rej('list not found'); + throw new ApiError(meta.errors.noSuchList); } await UserList.remove({ _id: userList._id }); - - res(); -})); +}); diff --git a/src/server/api/endpoints/users/lists/list.ts b/src/server/api/endpoints/users/lists/list.ts index 8f9775e19b..5bd662878d 100644 --- a/src/server/api/endpoints/users/lists/list.ts +++ b/src/server/api/endpoints/users/lists/list.ts @@ -11,11 +11,10 @@ export const meta = { kind: 'account-read' }; -export default define(meta, (ps, me) => new Promise(async (res, rej) => { - // Fetch lists +export default define(meta, async (ps, me) => { const userLists = await UserList.find({ userId: me._id, }); - res(await Promise.all(userLists.map(x => pack(x)))); -})); + return await Promise.all(userLists.map(x => pack(x))); +}); diff --git a/src/server/api/endpoints/users/lists/pull.ts b/src/server/api/endpoints/users/lists/pull.ts index 86eaa1dd8d..416c1b4b2d 100644 --- a/src/server/api/endpoints/users/lists/pull.ts +++ b/src/server/api/endpoints/users/lists/pull.ts @@ -4,6 +4,7 @@ import UserList from '../../../../../models/user-list'; import User, { pack as packUser } from '../../../../../models/user'; import { publishUserListStream } from '../../../../../services/stream'; import define from '../../../define'; +import { ApiError } from '../../../error'; export const meta = { desc: { @@ -29,10 +30,24 @@ export const meta = { 'en-US': 'Target user ID' } }, + }, + + errors: { + noSuchList: { + message: 'No such list.', + code: 'NO_SUCH_LIST', + id: '7f44670e-ab16-43b8-b4c1-ccd2ee89cc02' + }, + + noSuchUser: { + message: 'No such user.', + code: 'NO_SUCH_USER', + id: '588e7f72-c744-4a61-b180-d354e912bda2' + } } }; -export default define(meta, (ps, me) => new Promise(async (res, rej) => { +export default define(meta, async (ps, me) => { // Fetch the list const userList = await UserList.findOne({ _id: ps.listId, @@ -40,7 +55,7 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { }); if (userList == null) { - return rej('list not found'); + throw new ApiError(meta.errors.noSuchList); } // Fetch the user @@ -49,7 +64,7 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { }); if (user == null) { - return rej('user not found'); + throw new ApiError(meta.errors.noSuchUser); } // Pull the user @@ -59,7 +74,5 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { } }); - res(); - publishUserListStream(userList._id, 'userRemoved', await packUser(user)); -})); +}); diff --git a/src/server/api/endpoints/users/lists/push.ts b/src/server/api/endpoints/users/lists/push.ts index 6e2dbed518..90dd2aa045 100644 --- a/src/server/api/endpoints/users/lists/push.ts +++ b/src/server/api/endpoints/users/lists/push.ts @@ -7,6 +7,7 @@ import { renderActivity } from '../../../../../remote/activitypub/renderer'; import renderFollow from '../../../../../remote/activitypub/renderer/follow'; import { deliver } from '../../../../../queue'; import define from '../../../define'; +import { ApiError } from '../../../error'; export const meta = { desc: { @@ -32,10 +33,30 @@ export const meta = { 'en-US': 'Target user ID' } }, + }, + + errors: { + noSuchList: { + message: 'No such list.', + code: 'NO_SUCH_LIST', + id: '2214501d-ac96-4049-b717-91e42272a711' + }, + + noSuchUser: { + message: 'No such user.', + code: 'NO_SUCH_USER', + id: 'a89abd3d-f0bc-4cce-beb1-2f446f4f1e6a' + }, + + alreadyAdded: { + message: 'That user has already been added to that list.', + code: 'ALREADY_ADDED', + id: '1de7c884-1595-49e9-857e-61f12f4d4fc5' + } } }; -export default define(meta, (ps, me) => new Promise(async (res, rej) => { +export default define(meta, async (ps, me) => { // Fetch the list const userList = await UserList.findOne({ _id: ps.listId, @@ -43,7 +64,7 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { }); if (userList == null) { - return rej('list not found'); + throw new ApiError(meta.errors.noSuchList); } // Fetch the user @@ -52,11 +73,11 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { }); if (user == null) { - return rej('user not found'); + throw new ApiError(meta.errors.noSuchUser); } if (userList.userIds.map(id => id.toHexString()).includes(user._id.toHexString())) { - return rej('the user already added'); + throw new ApiError(meta.errors.alreadyAdded); } // Push the user @@ -66,8 +87,6 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { } }); - res(); - publishUserListStream(userList._id, 'userAdded', await packUser(user)); // このインスタンス内にこのリモートユーザーをフォローしているユーザーがいなくても投稿を受け取るためにダミーのユーザーがフォローしたということにする @@ -76,4 +95,4 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { const content = renderActivity(renderFollow(proxy, user)); deliver(proxy, content, user.inbox); } -})); +}); diff --git a/src/server/api/endpoints/users/lists/show.ts b/src/server/api/endpoints/users/lists/show.ts index c508659a15..3bd8ce6573 100644 --- a/src/server/api/endpoints/users/lists/show.ts +++ b/src/server/api/endpoints/users/lists/show.ts @@ -2,6 +2,7 @@ import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id'; import UserList, { pack } from '../../../../../models/user-list'; import define from '../../../define'; +import { ApiError } from '../../../error'; export const meta = { desc: { @@ -18,10 +19,18 @@ export const meta = { validator: $.type(ID), transform: transform, }, + }, + + errors: { + noSuchList: { + message: 'No such list.', + code: 'NO_SUCH_LIST', + id: '7bc05c21-1d7a-41ae-88f1-66820f4dc686' + }, } }; -export default define(meta, (ps, me) => new Promise(async (res, rej) => { +export default define(meta, async (ps, me) => { // Fetch the list const userList = await UserList.findOne({ _id: ps.listId, @@ -29,8 +38,8 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { }); if (userList == null) { - return rej('list not found'); + throw new ApiError(meta.errors.noSuchList); } - res(await pack(userList)); -})); + return await pack(userList); +}); diff --git a/src/server/api/endpoints/users/lists/update.ts b/src/server/api/endpoints/users/lists/update.ts index 79a7da5658..842ae189ee 100644 --- a/src/server/api/endpoints/users/lists/update.ts +++ b/src/server/api/endpoints/users/lists/update.ts @@ -2,6 +2,7 @@ import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id'; import UserList, { pack } from '../../../../../models/user-list'; import define from '../../../define'; +import { ApiError } from '../../../error'; export const meta = { desc: { @@ -30,10 +31,18 @@ export const meta = { 'en-US': 'name of this user list' } } + }, + + errors: { + noSuchList: { + message: 'No such list.', + code: 'NO_SUCH_LIST', + id: '796666fe-3dff-4d39-becb-8a5932c1d5b7' + }, } }; -export default define(meta, (ps, user) => new Promise(async (res, rej) => { +export default define(meta, async (ps, user) => { // Fetch the list const userList = await UserList.findOne({ _id: ps.listId, @@ -41,16 +50,14 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => { }); if (userList == null) { - return rej('list not found'); + throw new ApiError(meta.errors.noSuchList); } - // update await UserList.update({ _id: userList._id }, { $set: { title: ps.title } }); - // Response - res(await pack(userList._id)); -})); + return await pack(userList._id); +}); |