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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101export const cm = {
addSubscriber: async ({ email, name = '', isLead = true }) => {
await fetch(`https://api.createsend.com/api/v3.3/subscribers/${isLead ? process.env.CM_LEADS : process.env.CM_CUSTOMERS}.json`, {
method: 'POST',
headers: { Authorization: `Basic ${Buffer.from(`${process.env.CM_API_KEY}:x`).toString('base64')}` },
body: JSON.stringify({
EmailAddress: email,
Name: name,
ConsentToTrack: 'Yes',
Resubscribe: true,
})
});
return;
},
checkSubscriber: async ({ listId, email }) => {
return (await (await fetch(`https://api.createsend.com/api/v3.3/subscribers/${listId}.json?email=${encodeURIComponent(email)}`, {
method: 'GET',
headers: { Authorization: `Basic ${Buffer.from(`${process.env.CM_API_KEY}:x`).toString('base64')}` },
})).json())?.Code !== 203;
},
createDraftCampaign: async ({ Name, Subject, FromName, FromEmail, ReplyTo, ListIDs, TemplateID, TemplateContent }) => {
const campaignId = await (await fetch(`https://api.createsend.com/api/v3.3/campaigns/${process.env.CM_CLIENT_ID}/fromtemplate.json`, {
method: 'POST',
headers: { Authorization: `Basic ${Buffer.from(`${process.env.CM_API_KEY}:x`).toString('base64')}` },
body: JSON.stringify({
Name,
Subject,
FromName,
FromEmail,
ReplyTo,
ListIDs,
TemplateID,
TemplateContent,
})
})).json();
console.log(campaignId);
return campaignId;
},
createTemplate: async () => {
const templateId = await (await fetch(`https://api.createsend.com/api/v3.3/templates/${process.env.CM_CLIENT_ID}.json`, {
method: 'POST',
headers: { Authorization: `Basic ${Buffer.from(`${process.env.CM_API_KEY}:x`).toString('base64')}` },
body: JSON.stringify({
Name: "Compose Template",
HtmlPageURL: "https://files.wallstreetbeats.com/simple.html"
})
})).json();
console.log(templateId);
return templateId;
},
getTemplates: async () => {
const response = await (await fetch(`https://api.createsend.com/api/v3.3/clients/${process.env.CM_CLIENT_ID}/templates.json`, {
method: 'GET',
headers: { Authorization: `Basic ${Buffer.from(`${process.env.CM_API_KEY}:x`).toString('base64')}` },
})).json();
console.log(JSON.stringify({ response }));
return response;
},
removeSubscriber: async ({ listId, email }) => {
return (await (await fetch(`https://api.createsend.com/api/v3.3/subscribers/${listId}.json?email=${encodeURIComponent(email)}`, {
method: 'DELETE',
headers: { Authorization: `Basic ${Buffer.from(`${process.env.CM_API_KEY}:x`).toString('base64')}` }
})).text());
},
sendCampaign: async ({ campaignId, confirmationEmail }) => {
await fetch(`https://api.createsend.com/api/v3.3/campaigns/${campaignId}/send.json`, {
method: 'POST',
headers: { Authorization: `Basic ${Buffer.from(`${process.env.CM_API_KEY}:x`).toString('base64')}` },
body: JSON.stringify({
ConfirmationEmail: confirmationEmail,
SendDate: 'Immediately',
})
});
return;
},
sendCampaignPreview: async ({ campaignId, email }) => {
await fetch(`https://api.createsend.com/api/v3.3/campaigns/${campaignId}/sendpreview.json`, {
method: 'POST',
headers: { Authorization: `Basic ${Buffer.from(`${process.env.CM_API_KEY}:x`).toString('base64')}` },
body: JSON.stringify({
PreviewRecipients: [email],
})
});
return;
},
sendSmartEmail: async ({ templateId = process.env.CM_SMART_EMAIL, from = `noreply@${process.env.URL}`, to, data = {}, attachments = [] }) => {
const response = (await (await fetch(`https://api.createsend.com/api/v3.3/transactional/smartEmail/${templateId}/send?clientID=${process.env.CM_CLIENT_ID}`, {
method: 'POST',
headers: { Authorization: `Basic ${Buffer.from(`${process.env.CM_API_KEY}:x`).toString('base64')}` },
body: JSON.stringify({
From: from,
To: to,
Data: data,
ConsentToTrack: 'Yes',
Attachments: attachments
})
})).json());
console.log(response);
return response;
},
};