diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-11-02 12:49:08 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-11-02 12:49:08 +0900 |
| commit | a7e6b766be6b30b37839beb13f31d96b141cc25a (patch) | |
| tree | b6bf96ae808260f0aa94767835d59d25f7f889a7 /src/server/api/endpoints/users/recommendation.ts | |
| parent | Update src/server/api/endpoints/meta.ts (diff) | |
| download | sharkey-a7e6b766be6b30b37839beb13f31d96b141cc25a.tar.gz sharkey-a7e6b766be6b30b37839beb13f31d96b141cc25a.tar.bz2 sharkey-a7e6b766be6b30b37839beb13f31d96b141cc25a.zip | |
Resolve #2623
Diffstat (limited to 'src/server/api/endpoints/users/recommendation.ts')
| -rw-r--r-- | src/server/api/endpoints/users/recommendation.ts | 34 |
1 files changed, 20 insertions, 14 deletions
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 })))); } }); |