diff --git a/.changeset/good-cheetahs-tap.md b/.changeset/good-cheetahs-tap.md new file mode 100644 index 0000000..c2bd73d --- /dev/null +++ b/.changeset/good-cheetahs-tap.md @@ -0,0 +1,5 @@ +--- +'pliny': patch +--- + +Fix newsletter route handlers diff --git a/.changeset/pre.json b/.changeset/pre.json index 240a5c5..ec9e135 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -8,6 +8,7 @@ "changesets": [ "fuzzy-apples-judge", "giant-geckos-dress", + "good-cheetahs-tap", "good-knives-tan", "great-chairs-warn", "metal-coats-grab", diff --git a/packages/pliny/CHANGELOG.md b/packages/pliny/CHANGELOG.md index 7d4c196..afd2c69 100644 --- a/packages/pliny/CHANGELOG.md +++ b/packages/pliny/CHANGELOG.md @@ -1,5 +1,11 @@ # pliny +## 0.1.0-beta.6 + +### Patch Changes + +- 21080de: Fix newsletter route handlers + ## 0.1.0-beta.5 ### Patch Changes diff --git a/packages/pliny/package.json b/packages/pliny/package.json index 20f96de..fe00ebc 100644 --- a/packages/pliny/package.json +++ b/packages/pliny/package.json @@ -2,7 +2,7 @@ "name": "pliny", "description": "Main entry point for pliny components", "homepage": "https://github.com/timlrx/pliny", - "version": "0.1.0-beta.5", + "version": "0.1.0-beta.6", "type": "module", "exports": { "./*": "./*", diff --git a/packages/pliny/src/newsletter/buttondown.ts b/packages/pliny/src/newsletter/buttondown.ts index 5363970..320d72d 100644 --- a/packages/pliny/src/newsletter/buttondown.ts +++ b/packages/pliny/src/newsletter/buttondown.ts @@ -1,8 +1,4 @@ -import { NextApiRequest } from 'next' -import { NextRequest } from 'next/server' - -export const buttondownHandler = async (req: NextApiRequest | NextRequest) => { - const { email } = req.body +export const buttondownSubscribe = async (email: string) => { const API_KEY = process.env.BUTTONDOWN_API_KEY const API_URL = 'https://api.buttondown.email/v1/' const buttondownRoute = `${API_URL}subscribers` diff --git a/packages/pliny/src/newsletter/convertkit.ts b/packages/pliny/src/newsletter/convertkit.ts index 4557fd1..4ecf757 100644 --- a/packages/pliny/src/newsletter/convertkit.ts +++ b/packages/pliny/src/newsletter/convertkit.ts @@ -1,8 +1,4 @@ -import { NextApiRequest } from 'next' -import { NextRequest } from 'next/server' - -export const convertkitHandler = async (req: NextApiRequest | NextRequest) => { - const { email } = req.body +export const convertkitSubscribe = async (email: string) => { const FORM_ID = process.env.CONVERTKIT_FORM_ID const API_KEY = process.env.CONVERTKIT_API_KEY const API_URL = 'https://api.convertkit.com/v3/' diff --git a/packages/pliny/src/newsletter/emailOctopus.ts b/packages/pliny/src/newsletter/emailOctopus.ts index 0aa3e7a..bdc5b9f 100644 --- a/packages/pliny/src/newsletter/emailOctopus.ts +++ b/packages/pliny/src/newsletter/emailOctopus.ts @@ -1,8 +1,4 @@ -import { NextApiRequest } from 'next' -import { NextRequest } from 'next/server' - -export const emailOctopusHandler = async (req: NextApiRequest | NextRequest) => { - const { email } = req.body +export const emailOctopusSubscribe = async (email: string) => { const API_KEY = process.env.EMAILOCTOPUS_API_KEY const LIST_ID = process.env.EMAILOCTOPUS_LIST_ID const API_URL = 'https://emailoctopus.com/api/1.6/' diff --git a/packages/pliny/src/newsletter/index.ts b/packages/pliny/src/newsletter/index.ts index eee655e..952a0b5 100644 --- a/packages/pliny/src/newsletter/index.ts +++ b/packages/pliny/src/newsletter/index.ts @@ -1,12 +1,12 @@ import { NextApiRequest, NextApiResponse } from 'next' import { NextResponse } from 'next/server' import type { NextRequest } from 'next/server' -import { buttondownHandler } from './buttondown' -import { convertkitHandler } from './convertkit' -import { mailchimpHandler } from './mailchimp' -import { klaviyoHandler } from './klaviyo' -import { revueHandler } from './revue' -import { emailOctopusHandler } from './emailOctopus' +import { buttondownSubscribe } from './buttondown' +import { convertkitSubscribe } from './convertkit' +import { mailchimpSubscribe } from './mailchimp' +import { klaviyoSubscribe } from './klaviyo' +import { revueSubscribe } from './revue' +import { emailOctopusSubscribe } from './emailOctopus' export interface NewsletterConfig { provider: 'buttondown' | 'convertkit' | 'klaviyo' | 'mailchimp' | 'revue' | 'emailoctopus' @@ -31,22 +31,22 @@ async function NewsletterAPIHandler( let response: Response switch (options.provider) { case 'buttondown': - response = await buttondownHandler(req) + response = await buttondownSubscribe(email) break case 'convertkit': - response = await convertkitHandler(req) + response = await convertkitSubscribe(email) break case 'mailchimp': - response = await mailchimpHandler(req) + response = await mailchimpSubscribe(email) break case 'klaviyo': - response = await klaviyoHandler(req) + response = await klaviyoSubscribe(email) break case 'revue': - response = await revueHandler(req) + response = await revueSubscribe(email) break case 'emailoctopus': - response = await emailOctopusHandler(req) + response = await emailOctopusSubscribe(email) break default: res.status(500).json({ error: `${options.provider} not supported` }) @@ -61,30 +61,30 @@ async function NewsletterAPIHandler( } async function NewsletterRouteHandler(req: NextRequest, options: NewsletterConfig) { - const res = await req.json() - if (!res.email) { + const { email } = await req.json() + if (!email) { return NextResponse.json({ error: 'Email is required' }, { status: 400 }) } try { let response: Response switch (options.provider) { case 'buttondown': - response = await buttondownHandler(req) + response = await buttondownSubscribe(email) break case 'convertkit': - response = await convertkitHandler(req) + response = await convertkitSubscribe(email) break case 'mailchimp': - response = await mailchimpHandler(req) + response = await mailchimpSubscribe(email) break case 'klaviyo': - response = await klaviyoHandler(req) + response = await klaviyoSubscribe(email) break case 'revue': - response = await revueHandler(req) + response = await revueSubscribe(email) break case 'emailoctopus': - response = await emailOctopusHandler(req) + response = await emailOctopusSubscribe(email) break default: return NextResponse.json({ error: `${options.provider} not supported` }, { status: 500 }) diff --git a/packages/pliny/src/newsletter/klaviyo.ts b/packages/pliny/src/newsletter/klaviyo.ts index 7d0e2b8..65f0d6f 100644 --- a/packages/pliny/src/newsletter/klaviyo.ts +++ b/packages/pliny/src/newsletter/klaviyo.ts @@ -1,8 +1,4 @@ -import { NextApiRequest } from 'next' -import { NextRequest } from 'next/server' - -export const klaviyoHandler = async (req: NextApiRequest | NextRequest) => { - const { email } = req.body +export const klaviyoSubscribe = async (email: string) => { const API_KEY = process.env.KLAVIYO_API_KEY const LIST_ID = process.env.KLAVIYO_LIST_ID const response = await fetch( diff --git a/packages/pliny/src/newsletter/mailchimp.ts b/packages/pliny/src/newsletter/mailchimp.ts index ce9eb97..13db78f 100644 --- a/packages/pliny/src/newsletter/mailchimp.ts +++ b/packages/pliny/src/newsletter/mailchimp.ts @@ -1,5 +1,3 @@ -import { NextApiRequest } from 'next' -import { NextRequest } from 'next/server' import mailchimp from '@mailchimp/mailchimp_marketing' mailchimp.setConfig({ @@ -7,9 +5,7 @@ mailchimp.setConfig({ server: process.env.MAILCHIMP_API_SERVER, // E.g. us1 }) -export const mailchimpHandler = async (req: NextApiRequest | NextRequest) => { - const { email } = req.body - +export const mailchimpSubscribe = async (email: string) => { const response = await mailchimp.lists.addListMember(process.env.MAILCHIMP_AUDIENCE_ID, { email_address: email, status: 'subscribed', diff --git a/packages/pliny/src/newsletter/revue.ts b/packages/pliny/src/newsletter/revue.ts index 75376d0..b6c66a4 100644 --- a/packages/pliny/src/newsletter/revue.ts +++ b/packages/pliny/src/newsletter/revue.ts @@ -1,9 +1,4 @@ -import { NextApiRequest } from 'next' -import { NextRequest } from 'next/server' - -export const revueHandler = async (req: NextApiRequest | NextRequest) => { - const { email } = req.body - +export const revueSubscribe = async (email: string) => { const API_KEY = process.env.REVUE_API_KEY const API_URL = 'https://www.getrevue.co/api/v2/' const revueRoute = `${API_URL}subscribers`