From 0926d5b6da68be6c9375addbd3cec8545185dea7 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 3 Mar 2017 07:47:14 +0900 Subject: wip --- src/api/endpoints/users/show.ts | 51 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/api/endpoints/users/show.ts (limited to 'src/api/endpoints/users/show.ts') diff --git a/src/api/endpoints/users/show.ts b/src/api/endpoints/users/show.ts new file mode 100644 index 0000000000..cae4ac0b7f --- /dev/null +++ b/src/api/endpoints/users/show.ts @@ -0,0 +1,51 @@ +'use strict'; + +/** + * Module dependencies + */ +import it from '../../it'; +import User from '../../models/user'; +import serialize from '../../serializers/user'; + +/** + * Show a user + * + * @param {any} params + * @param {any} me + * @return {Promise} + */ +module.exports = (params, me) => + new Promise(async (res, rej) => +{ + // Get 'user_id' parameter + const [userId, userIdErr] = it(params.user_id, 'id'); + if (userIdErr) return rej('invalid user_id param'); + + // Get 'username' parameter + const [username, usernameErr] = it(params.username, 'string'); + if (usernameErr) return rej('invalid username param'); + + if (userId === null && username === null) { + return rej('user_id or username is required'); + } + + const q = userId != null + ? { _id: userId } + : { username_lower: username.toLowerCase() } ; + + // Lookup user + const user = await User.findOne(q, { + fields: { + data: false + } + }); + + if (user === null) { + return rej('user not found'); + } + + // Send response + res(await serialize(user, me, { + detail: true + })); +}); -- cgit v1.2.3-freya