-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathadd.js
78 lines (70 loc) · 2.18 KB
/
add.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
const replyService = require('../services/service');
/**
* LEGACY
* @param job
* @returns {Promise<void>}
*/
module.exports = async(job) => {
const {
body,
workflow: {
data: wfData
}
} = job.data;
let sendData = {};
if(!wfData || !wfData.api_key) {
throw new Error('Missing data api_key');
}
if(!wfData || !wfData.campaign_id) {
throw new Error('Missing data campaign_id');
}
sendData.campaignId = wfData.campaign_id;
if(!body || !body.email) {
throw new Error('Missing email in body');
}
sendData.email = body.email;
sendData.firstname = body.email;
if(body.source){
sendData.source = body.source;
}
if(body.link) {
sendData.link = body.link
}
if(wfData.mapping && wfData.mapping.custom_fields) {
sendData.customFields = [];
wfData.mapping.custom_fields.forEach(function (element) {
let keyReply = element.key;
let variable = element.value;
if(body[variable]) {
sendData.customFields.push({key: keyReply, value: body[variable]});
}
});
}
try {
job.progress(10);
await replyService.api(wfData.api_key).send('GET', `/v1/people?email=${encodeURIComponent(body.email)}`);
job.progress(35);
await replyService.api(wfData.api_key).send('POST', '/v1/actions/removepersonfromallcampaigns', {
'email': body.email
});
job.progress(75);
await replyService.api(wfData.api_key).send('POST', '/v1/actions/pushtocampaign', {
'campaignId': wfData.campaign_id,
'email': body.email
});
job.progress(90);
await replyService.api(wfData.api_key).send('POST', '/v1/people', {
'email': body.email,
'customFields': sendData.customFields
});
job.progress(100);
} catch(err) {
if(err.statusCode === 404) {
job.progress(50);
await replyService.api(wfData.api_key).send('POST', '/v1/actions/addandpushtocampaign', sendData);
job.progress(100);
} else {
throw err;
}
}
};