diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-04-25 22:37:08 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-04-25 22:37:08 +0900 |
| commit | 7ea42af0ba9f3678985270f382279560609623be (patch) | |
| tree | 2bf587fc825af6a1d6e0227f17d1a9dca5798276 /src/server/api | |
| parent | wip (diff) | |
| download | misskey-7ea42af0ba9f3678985270f382279560609623be.tar.gz misskey-7ea42af0ba9f3678985270f382279560609623be.tar.bz2 misskey-7ea42af0ba9f3678985270f382279560609623be.zip | |
wip
Diffstat (limited to 'src/server/api')
| -rw-r--r-- | src/server/api/endpoints/users/show.ts | 58 |
1 files changed, 35 insertions, 23 deletions
diff --git a/src/server/api/endpoints/users/show.ts b/src/server/api/endpoints/users/show.ts index 64adb5963b..141565ece6 100644 --- a/src/server/api/endpoints/users/show.ts +++ b/src/server/api/endpoints/users/show.ts @@ -8,7 +8,7 @@ import resolveRemoteUser from '../../../../remote/resolve-user'; const cursorOption = { fields: { data: false } }; /** - * Show a user + * Show user(s) */ module.exports = (params, me) => new Promise(async (res, rej) => { let user; @@ -17,6 +17,10 @@ module.exports = (params, me) => new Promise(async (res, rej) => { const [userId, userIdErr] = $(params.userId).optional.type(ID).$; if (userIdErr) return rej('invalid userId param'); + // Get 'userIds' parameter + const [userIds, userIdsErr] = $(params.userIds).optional.array($().type(ID)).$; + if (userIdsErr) return rej('invalid userIds param'); + // Get 'username' parameter const [username, usernameErr] = $(params.username).optional.string().$; if (usernameErr) return rej('invalid username param'); @@ -25,32 +29,40 @@ module.exports = (params, me) => new Promise(async (res, rej) => { const [host, hostErr] = $(params.host).nullable.optional.string().$; if (hostErr) return rej('invalid host param'); - if (userId === undefined && typeof username !== 'string') { - return rej('userId or pair of username and host is required'); - } + if (userIds) { + const users = await User.find({ + _id: { + $in: userIds + } + }); - // Lookup user - if (typeof host === 'string') { - try { - user = await resolveRemoteUser(username, host, cursorOption); - } catch (e) { - console.warn(`failed to resolve remote user: ${e}`); - return rej('failed to resolve remote user'); - } + res(await Promise.all(users.map(u => pack(u, me, { + detail: true + })))); } else { - const q = userId !== undefined - ? { _id: userId } - : { usernameLower: username.toLowerCase(), host: null }; + // Lookup user + if (typeof host === 'string') { + try { + user = await resolveRemoteUser(username, host, cursorOption); + } catch (e) { + console.warn(`failed to resolve remote user: ${e}`); + return rej('failed to resolve remote user'); + } + } else { + const q = userId !== undefined + ? { _id: userId } + : { usernameLower: username.toLowerCase(), host: null }; - user = await User.findOne(q, cursorOption); + user = await User.findOne(q, cursorOption); - if (user === null) { - return rej('user not found'); + if (user === null) { + return rej('user not found'); + } } - } - // Send response - res(await pack(user, me, { - detail: true - })); + // Send response + res(await pack(user, me, { + detail: true + })); + } }); |