📦 EqualifyEverything / equalify

📄 cm.ts · 101 lines
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;
    },
};