55 lines
No EOL
1.5 KiB
JavaScript
55 lines
No EOL
1.5 KiB
JavaScript
const express = require('express')
|
|
const mailchimp = require("@mailchimp/mailchimp_marketing")
|
|
|
|
const app = express()
|
|
|
|
app.use(express.static(__dirname))
|
|
app.use(express.json())
|
|
app.use(express.urlencoded({extended: true}))
|
|
|
|
app.get("/", (req, res) => {
|
|
res.sendFile(__dirname + "/signup.html")
|
|
})
|
|
|
|
mailchimp.setConfig({
|
|
apiKey: process.env.MC_API_KEY,
|
|
server: process.env.MC_SERVER
|
|
})
|
|
|
|
app.post("/", (req, res) => {
|
|
const firstName = req.body.fName
|
|
const lastName = req.body.lName
|
|
const email = req.body.email
|
|
|
|
async function addContact(contactData) {
|
|
try {
|
|
const response = await mailchimp.lists.addListMember(process.env.MC_LIST_ID, contactData)
|
|
console.log(`Successfully added contact as an audience member. The contact's id is ${response.id}`)
|
|
res.sendFile(__dirname + "/success.html")
|
|
}
|
|
catch(err) {
|
|
// console.log(err)
|
|
res.sendFile(__dirname + "/failure.html")
|
|
}
|
|
}
|
|
|
|
const contactObject =
|
|
{
|
|
email_address: email,
|
|
status: "subscribed",
|
|
merge_fields: {
|
|
EMAIL: email,
|
|
FNAME: firstName,
|
|
LNAME: lastName
|
|
}
|
|
}
|
|
|
|
const payload = JSON.stringify(contactObject)
|
|
addContact(payload)
|
|
// console.log(firstName + lastName + email)
|
|
// console.log(payload)
|
|
})
|
|
|
|
app.listen(process.env.PORT || '3000', (req, res) => {
|
|
console.log("Server is running.")
|
|
}) |