43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import { NextApiRequest, NextApiResponse } from 'next';
|
|
import base64 from 'base-64';
|
|
|
|
export default async function handler(
|
|
req: NextApiRequest,
|
|
res: NextApiResponse,
|
|
) {
|
|
if (req.method !== 'POST') {
|
|
res.status(400).json({
|
|
message: 'Email API: Invalid http method. | Only POST is accepted.',
|
|
});
|
|
}
|
|
|
|
const email = req.body.email;
|
|
const response = await fetch(
|
|
`https://api.createsend.com/api/v3.2/subscribers/${process.env.CAMPAIGN_MONITOR_LIST_API_ID}.json`,
|
|
{
|
|
body: JSON.stringify({
|
|
EmailAddress: email,
|
|
ConsentToTrack: 'Unchanged',
|
|
}),
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
Authorization: `Basic ${base64.encode(
|
|
`${process.env.CAMPAIGN_MONITOR_API_KEY}:x`,
|
|
)}`,
|
|
},
|
|
method: 'POST',
|
|
},
|
|
);
|
|
|
|
if (response.status === 201) {
|
|
// console.log(`Email API: ${email} subscribed!`);
|
|
res.status(201).json({ email });
|
|
} else {
|
|
// const result = await response.json();
|
|
// console.warn(
|
|
// `Email API: | Code: ${result.Code} | Email: ${email} | ${result.Message}`
|
|
// );
|
|
res.status(400).json({ email });
|
|
}
|
|
}
|