67 lines
1.6 KiB
JavaScript
67 lines
1.6 KiB
JavaScript
|
|
const axios = require("axios")
|
||
|
|
const fs = require("fs")
|
||
|
|
var { parse } = require("csv-parse")
|
||
|
|
var usersArray = []
|
||
|
|
|
||
|
|
var api_key = "" // INSERT API KEY
|
||
|
|
|
||
|
|
function wait(ms) {
|
||
|
|
return new Promise((r) => setTimeout(r, ms))
|
||
|
|
}
|
||
|
|
|
||
|
|
function bulkAddPeople(xApiKey, users, num) {
|
||
|
|
let page = num
|
||
|
|
|
||
|
|
axios({
|
||
|
|
method: "post",
|
||
|
|
url: "https://api.northpass.com/v2/bulk/people",
|
||
|
|
data: {
|
||
|
|
data: {
|
||
|
|
attributes: {
|
||
|
|
people: [{ email: users[num].email, groups: users[num].group }],
|
||
|
|
},
|
||
|
|
},
|
||
|
|
},
|
||
|
|
headers: {
|
||
|
|
accept: "application/json",
|
||
|
|
"x-api-key": xApiKey,
|
||
|
|
"content-type": "application/json",
|
||
|
|
},
|
||
|
|
})
|
||
|
|
.then((res) => {
|
||
|
|
if (page < users.length - 1) {
|
||
|
|
console.log(`User ${users[num].email} added to group ${users[num].group} on index ${page}`)
|
||
|
|
page++
|
||
|
|
wait(200)
|
||
|
|
bulkAddPeople(xApiKey, users, page)
|
||
|
|
} else {
|
||
|
|
console.log("complete")
|
||
|
|
}
|
||
|
|
})
|
||
|
|
.catch((err) => {
|
||
|
|
console.log(err)
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
const csvReader = async () => {
|
||
|
|
fs.createReadStream("./csv-files/drofus-users.csv") // UPDATE URL OF CSV FILE
|
||
|
|
.pipe(parse({ delimiter: "," }))
|
||
|
|
.on("data", function (row) {
|
||
|
|
const userObj = {
|
||
|
|
email: row[3], // UPDATE COLUMN INDEX
|
||
|
|
group: row[7] // UPDATE COLUMN INDEX
|
||
|
|
}
|
||
|
|
usersArray.push(userObj)
|
||
|
|
})
|
||
|
|
.on("error", function (error) {
|
||
|
|
console.log(error.message)
|
||
|
|
})
|
||
|
|
.on("end", async function () {
|
||
|
|
console.log(`Number of emails in array: ${usersArray.length}`)
|
||
|
|
|
||
|
|
bulkAddPeople(api_key, usersArray, 1) // Start with index 1 if there is a header row, otherwise start with 0
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
csvReader()
|