-
Notifications
You must be signed in to change notification settings - Fork 7
/
mailchimp.ts
38 lines (28 loc) · 1.18 KB
/
mailchimp.ts
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
import { defineEventHandler, createError, readBody } from 'h3'
import { useRuntimeConfig } from '#imports'
export default defineEventHandler(async (event) => {
const { email } = await readBody(event)
if (!email) {
console.error('`[@nuxtjs/newsletter]` Missing `email` in the subscribe body')
return;
}
const newsletterConfig = useRuntimeConfig().newsletter
const providerName = Object.keys(newsletterConfig)[0];
const mailchimp = await import('@mailchimp/mailchimp_marketing').then(r => r.default || r)
mailchimp.setConfig({
apiKey: newsletterConfig[providerName].apiKey,
server: newsletterConfig[providerName].serverPrefix
});
let result
try {
const response = await mailchimp.lists.addListMember(newsletterConfig[providerName].audienceId, {
email_address: email,
status: 'subscribed'
});
result = { message: `Email ${response.email_address} subscribed to Mailchimp`, status: 200 }
} catch (err) {
result = { message: err.response.body.title, status: err.status }
}
if (result.status !== 200) throw createError({ statusCode: result.status, statusMessage: result.message })
return result
})