mirror of
https://github.com/fergalmoran/supanextail.git
synced 2025-12-22 01:10:01 +00:00
61 lines
1.4 KiB
JavaScript
61 lines
1.4 KiB
JavaScript
import Cors from "cors";
|
|
import axios from "axios";
|
|
import initMiddleware from "utils/init-middleware";
|
|
|
|
const rateLimit = require("express-rate-limit");
|
|
|
|
export const config = {
|
|
api: {
|
|
externalResolver: true,
|
|
},
|
|
};
|
|
|
|
const cors = initMiddleware(
|
|
Cors({
|
|
methods: ["PUT"],
|
|
})
|
|
);
|
|
|
|
const limiter = initMiddleware(
|
|
rateLimit({
|
|
windowMs: 30000, // 30sec
|
|
max: 2, // Max 2 request per 30 sec
|
|
})
|
|
);
|
|
|
|
export default async function handler(req, res) {
|
|
await cors(req, res);
|
|
await limiter(req, res);
|
|
if (req.method === "PUT") {
|
|
axios
|
|
.put(
|
|
"https://api.sendgrid.com/v3/marketing/contacts",
|
|
{
|
|
contacts: [{ email: `${req.body.mail}` }],
|
|
list_ids: [process.env.SENDGRID_MAILING_ID],
|
|
},
|
|
{
|
|
headers: {
|
|
"content-type": "application/json",
|
|
Authorization: `Bearer ${process.env.SENDGRID_SECRET}`,
|
|
},
|
|
}
|
|
)
|
|
.then((result) => {
|
|
console.log(result);
|
|
res
|
|
.status(200)
|
|
.send({
|
|
message:
|
|
"Your email has been succesfully added to the mailing list. Welcome 👋",
|
|
});
|
|
})
|
|
.catch((err) => {
|
|
res.status(500).send({
|
|
message:
|
|
"Oups, there was a problem with your subscription, please try again or contact us",
|
|
});
|
|
});
|
|
}
|
|
}
|