From 7788a6fcd91e5137cb454f014c5a79e4dc821119 Mon Sep 17 00:00:00 2001 From: Ryan Mwangi Date: Sun, 29 Dec 2024 02:47:36 +0300 Subject: [PATCH] feat(campaign): send welcome campaign on sign up --- src/formHandler.js | 22 ++++++++++++++++++++++ src/server.js | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/formHandler.js b/src/formHandler.js index 6978a75..1b154be 100644 --- a/src/formHandler.js +++ b/src/formHandler.js @@ -8,6 +8,8 @@ export async function submitToListmonk(req, res) { const listmonkUrl = process.env.LISTMONK_URL; const listmonkUsername = process.env.LISTMONK_USERNAME; const listmonkPassword = process.env.LISTMONK_PASSWORD; + const campaignId = process.env.PRESET_CAMPAIGN_ID; + const listmonkBaseUrl = process.env.LISTMONK_BASE_URL; // Encode username and password as base64 const auth = Buffer.from(`${listmonkUsername}:${listmonkPassword}`).toString('base64'); @@ -26,6 +28,7 @@ export async function submitToListmonk(req, res) { console.log('Sending request to Listmonk with payload:', payload); try { + // Add subscriber const response = await fetch(listmonkUrl, { method: 'POST', headers: { @@ -40,6 +43,25 @@ export async function submitToListmonk(req, res) { throw new Error(`Listmonk API error: ${response.statusText}. Response body: ${errorBody}`); } + // Send the welcome campaign + const campaignSendUrl = `${listmonkBaseUrl}/campaigns/${campaignId}/send`; + console.log('Sending campaign using URL:', campaignSendUrl); + const campaignResponse = await fetch(campaignSendUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Basic ${auth}` + } + }); + + if (!campaignResponse.ok) { + const errorBody = await campaignResponse.text(); + throw new Error(`Listmonk API error (Send Campaign): ${campaignResponse.statusText}. Response body: ${errorBody}`); + } + + const campaignResult = await campaignResponse.json(); + console.log('Campaign sent successfully:', campaignResult); + const result = await response.json(); res.status(200).json({ message: 'Subscription successful!', result }); } catch (error) { diff --git a/src/server.js b/src/server.js index 9173a8d..dbbd038 100644 --- a/src/server.js +++ b/src/server.js @@ -9,7 +9,7 @@ dotenv.config(); validateEnvVariables(); const app = express(); -const PORT = process.env.PORT || 3002; +const PORT = process.env.PORT || 3003; app.use(express.json());