From a7e6b766be6b30b37839beb13f31d96b141cc25a Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 2 Nov 2018 12:49:08 +0900 Subject: Resolve #2623 --- src/server/api/endpoints/users/lists/create.ts | 16 +++++++---- src/server/api/endpoints/users/recommendation.ts | 34 ++++++++++++++---------- 2 files changed, 31 insertions(+), 19 deletions(-) (limited to 'src/server/api/endpoints/users') diff --git a/src/server/api/endpoints/users/lists/create.ts b/src/server/api/endpoints/users/lists/create.ts index ac4f957a0d..c14bb64daa 100644 --- a/src/server/api/endpoints/users/lists/create.ts +++ b/src/server/api/endpoints/users/lists/create.ts @@ -1,6 +1,7 @@ import $ from 'cafy'; import UserList, { pack } from '../../../../../models/user-list'; import { ILocalUser } from '../../../../../models/user'; +import getParams from '../../../get-params'; export const meta = { desc: { @@ -10,19 +11,24 @@ export const meta = { requireCredential: true, - kind: 'account-write' + kind: 'account-write', + + params: { + title: { + validator: $.str.range(1, 100) + } + } }; export default async (params: any, user: ILocalUser) => new Promise(async (res, rej) => { - // Get 'title' parameter - const [title, titleErr] = $.str.range(1, 100).get(params.title); - if (titleErr) return rej('invalid title param'); + const [ps, psErr] = getParams(meta, params); + if (psErr) return rej(psErr); // insert const userList = await UserList.insert({ createdAt: new Date(), userId: user._id, - title: title, + title: ps.title, userIds: [] }); diff --git a/src/server/api/endpoints/users/recommendation.ts b/src/server/api/endpoints/users/recommendation.ts index df85343f0f..47c809ee4c 100644 --- a/src/server/api/endpoints/users/recommendation.ts +++ b/src/server/api/endpoints/users/recommendation.ts @@ -5,6 +5,7 @@ import { getFriendIds } from '../../common/get-friends'; import Mute from '../../../../models/mute'; import * as request from 'request'; import config from '../../../../config'; +import getParams from '../../get-params'; export const meta = { desc: { @@ -13,10 +14,25 @@ export const meta = { requireCredential: true, - kind: 'account-read' + kind: 'account-read', + + params: { + limit: { + validator: $.num.optional.range(1, 100), + default: 10 + }, + + offset: { + validator: $.num.optional.min(0), + default: 0 + } + } }; export default (params: any, me: ILocalUser) => new Promise(async (res, rej) => { + const [ps, psErr] = getParams(meta, params); + if (psErr) return rej(psErr); + if (config.user_recommendation && config.user_recommendation.external) { const userName = me.username; const hostName = config.hostname; @@ -45,14 +61,6 @@ export default (params: any, me: ILocalUser) => new Promise(async (res, rej) => } }); } else { - // Get 'limit' parameter - const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit); - if (limitErr) return rej('invalid limit param'); - - // Get 'offset' parameter - const [offset = 0, offsetErr] = $.num.optional.min(0).get(params.offset); - if (offsetErr) return rej('invalid offset param'); - // ID list of the user itself and other users who the user follows const followingIds = await getFriendIds(me._id); @@ -72,15 +80,13 @@ export default (params: any, me: ILocalUser) => new Promise(async (res, rej) => }, host: null }, { - limit: limit, - skip: offset, + limit: ps.limit, + skip: ps.offset, sort: { followersCount: -1 } }); - // Serialize - res(await Promise.all(users.map(async user => - await pack(user, me, { detail: true })))); + res(await Promise.all(users.map(user => pack(user, me, { detail: true })))); } }); -- cgit v1.2.3-freya