diff --git a/config/default.js b/config/default.js index 2b5ca7ba..1a3090bf 100644 --- a/config/default.js +++ b/config/default.js @@ -40,7 +40,7 @@ module.exports = { TOPCODER_USERS_API: process.env.TOPCODER_USERS_API || 'https://api.topcoder-dev.com/v3/users', // the api to find topcoder members - TOPCODER_MEMBERS_API: process.env.TOPCODER_MEMBERS_API || 'https://api.topcoder-dev.com/v3/members', + TOPCODER_MEMBERS_API: process.env.TOPCODER_MEMBERS_API || 'https://api.topcoder-dev.com/v5/members', // rate limit of requests to user api MAX_PARALLEL_REQUEST_TOPCODER_USERS_API: process.env.MAX_PARALLEL_REQUEST_TOPCODER_USERS_API || 100, diff --git a/src/common/helper.js b/src/common/helper.js index 0ce11905..e68e5c58 100644 --- a/src/common/helper.js +++ b/src/common/helper.js @@ -1304,13 +1304,10 @@ async function getMemberDetailsByHandles(handles) { } const token = await getM2MToken(); const res = await request - .get(`${config.TOPCODER_MEMBERS_API}/_search`) + .get(`${config.TOPCODER_MEMBERS_API}/`) .query({ - query: _.map( - handles, - (handle) => `handleLower:${handle.toLowerCase()}` - ).join(' OR '), - fields: 'userId,handle,firstName,lastName,email', + 'handlesLower[]': handles.map(handle => handle.toLowerCase()), + fields: 'userId,handle,handleLower,firstName,lastName,email', }) .set('Authorization', `Bearer ${token}`) .set('Accept', 'application/json'); @@ -1318,7 +1315,7 @@ async function getMemberDetailsByHandles(handles) { context: 'getMemberDetailsByHandles', message: `response body: ${JSON.stringify(res.body)}`, }); - return _.get(res.body, 'result.content'); + return res.body; } /** @@ -1327,17 +1324,14 @@ async function getMemberDetailsByHandles(handles) { * @param {String} handle the user handle * @returns {Object} the member details */ -async function getV3MemberDetailsByHandle(handle) { - const token = await getM2MToken(); - const res = await request - .get(`${config.TOPCODER_MEMBERS_API}/${handle}`) - .set('Authorization', `Bearer ${token}`) - .set('Accept', 'application/json'); - localLogger.debug({ - context: 'getV3MemberDetailsByHandle', - message: `response body: ${JSON.stringify(res.body)}`, - }); - return _.get(res.body, 'result.content'); +async function getMemberDetailsByHandle(handle) { + const [memberDetails] = await getMemberDetailsByHandles([handle]) + + if (!memberDetails) { + throw new errors.NotFoundError(`Member details are not found by handle "${handle}".`) + } + + return memberDetails } /** @@ -1756,7 +1750,7 @@ module.exports = { getAuditM2Muser, checkIsMemberOfProject, getMemberDetailsByHandles, - getV3MemberDetailsByHandle, + getMemberDetailsByHandle, getMemberDetailsByEmails, createProjectMember, listProjectMembers, diff --git a/src/services/PaymentService.js b/src/services/PaymentService.js index d06ad671..e61a6c34 100644 --- a/src/services/PaymentService.js +++ b/src/services/PaymentService.js @@ -153,7 +153,7 @@ async function activateChallenge (id, token) { async function closeChallenge (id, userHandle, token) { localLogger.info({ context: 'closeChallenge', message: `Closing challenge ${id}` }) try { - const { userId } = await helper.getV3MemberDetailsByHandle(userHandle) + const { userId } = await helper.getMemberDetailsByHandle(userHandle) const body = { status: constants.ChallengeStatus.COMPLETED, winners: [{