Skip to content
This repository was archived by the owner on Jan 23, 2025. It is now read-only.

Commit 6c2412e

Browse files
fetch paginated results from v5 terms api
1 parent d99319d commit 6c2412e

File tree

1 file changed

+32
-4
lines changed

1 file changed

+32
-4
lines changed

src/scripts/sync-terms.js

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
require('../bootstrap')
22
const util = require('util')
33
const config = require('config')
4+
const request = require('superagent')
45
const _ = require('lodash')
56
const logger = require('../common/logger')
67
const helper = require('../common/helper')
@@ -63,22 +64,49 @@ async function createEntry (termsOfUseId, memberId) {
6364
return result
6465
}
6566

67+
/**
68+
* Gets all paginated results from `/terms/:id/users`
69+
* @param {String} m2mToken the m2m token
70+
*/
71+
async function getAllTermUsers (m2mToken) {
72+
let allData = []
73+
// get search is paginated, we need to get all pages' data
74+
let page = 1
75+
while (true) {
76+
const result = await request
77+
.get(`${config.V5_TERMS_API_URL}/${config.SYNC_V5_TERM_UUID}/users`)
78+
.query({ page, perPage: 100 })
79+
.set('Authorization', `Bearer ${m2mToken}`)
80+
.set('Content-Type', 'application/json')
81+
.set('Accept', 'application/json')
82+
83+
const users = _.get(result, 'body.result', [])
84+
if (users.length === 0) {
85+
break
86+
}
87+
allData = allData.concat(users)
88+
page += 1
89+
if (result.headers['x-total-pages'] && page > Number(result.headers['x-total-pages'])) {
90+
break
91+
}
92+
}
93+
return allData
94+
}
95+
6696
/**
6797
* Application entry point
6898
*/
6999
async function main () {
70100
try {
71-
let res
72101
const m2mToken = await helper.getM2MToken()
73102
logger.info(`Fetching details for term ${config.SYNC_V5_TERM_UUID}`)
74-
res = await helper.getRequest(`${config.V5_TERMS_API_URL}/${config.SYNC_V5_TERM_UUID}`, m2mToken)
103+
const res = await helper.getRequest(`${config.V5_TERMS_API_URL}/${config.SYNC_V5_TERM_UUID}`, m2mToken)
75104
const legacyTermId = _.get(res, 'body.legacyId')
76105
if (!legacyTermId) {
77106
throw new Error(`Term ${config.SYNC_V5_TERM_UUID} does not have a legacyId`)
78107
}
79108
logger.info(`Fetching users that have agreed to ${config.SYNC_V5_TERM_UUID}`)
80-
res = await helper.getRequest(`${config.V5_TERMS_API_URL}/${config.SYNC_V5_TERM_UUID}/users`, m2mToken)
81-
const v5Entries = _.get(res, 'body.result', [])
109+
const v5Entries = await getAllTermUsers(m2mToken)
82110
logger.debug(`Found ${v5Entries.length} users`)
83111

84112
logger.info(`Fetching users from legacy for ID: ${legacyTermId}`)

0 commit comments

Comments
 (0)