Skip to content

Commit 6c7cf77

Browse files
authored
Merge pull request #114 from timlrx/v2
Fix route handlers
2 parents c27df31 + bfb4448 commit 6c7cf77

File tree

11 files changed

+39
-52
lines changed

11 files changed

+39
-52
lines changed

.changeset/good-cheetahs-tap.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'pliny': patch
3+
---
4+
5+
Fix newsletter route handlers

.changeset/pre.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"changesets": [
99
"fuzzy-apples-judge",
1010
"giant-geckos-dress",
11+
"good-cheetahs-tap",
1112
"good-knives-tan",
1213
"great-chairs-warn",
1314
"metal-coats-grab",

packages/pliny/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# pliny
22

3+
## 0.1.0-beta.6
4+
5+
### Patch Changes
6+
7+
- 21080de: Fix newsletter route handlers
8+
39
## 0.1.0-beta.5
410

511
### Patch Changes

packages/pliny/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "pliny",
33
"description": "Main entry point for pliny components",
44
"homepage": "https://github.com/timlrx/pliny",
5-
"version": "0.1.0-beta.5",
5+
"version": "0.1.0-beta.6",
66
"type": "module",
77
"exports": {
88
"./*": "./*",

packages/pliny/src/newsletter/buttondown.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
import { NextApiRequest } from 'next'
2-
import { NextRequest } from 'next/server'
3-
4-
export const buttondownHandler = async (req: NextApiRequest | NextRequest) => {
5-
const { email } = req.body
1+
export const buttondownSubscribe = async (email: string) => {
62
const API_KEY = process.env.BUTTONDOWN_API_KEY
73
const API_URL = 'https://api.buttondown.email/v1/'
84
const buttondownRoute = `${API_URL}subscribers`

packages/pliny/src/newsletter/convertkit.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
import { NextApiRequest } from 'next'
2-
import { NextRequest } from 'next/server'
3-
4-
export const convertkitHandler = async (req: NextApiRequest | NextRequest) => {
5-
const { email } = req.body
1+
export const convertkitSubscribe = async (email: string) => {
62
const FORM_ID = process.env.CONVERTKIT_FORM_ID
73
const API_KEY = process.env.CONVERTKIT_API_KEY
84
const API_URL = 'https://api.convertkit.com/v3/'

packages/pliny/src/newsletter/emailOctopus.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
import { NextApiRequest } from 'next'
2-
import { NextRequest } from 'next/server'
3-
4-
export const emailOctopusHandler = async (req: NextApiRequest | NextRequest) => {
5-
const { email } = req.body
1+
export const emailOctopusSubscribe = async (email: string) => {
62
const API_KEY = process.env.EMAILOCTOPUS_API_KEY
73
const LIST_ID = process.env.EMAILOCTOPUS_LIST_ID
84
const API_URL = 'https://emailoctopus.com/api/1.6/'

packages/pliny/src/newsletter/index.ts

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { NextApiRequest, NextApiResponse } from 'next'
22
import { NextResponse } from 'next/server'
33
import type { NextRequest } from 'next/server'
4-
import { buttondownHandler } from './buttondown'
5-
import { convertkitHandler } from './convertkit'
6-
import { mailchimpHandler } from './mailchimp'
7-
import { klaviyoHandler } from './klaviyo'
8-
import { revueHandler } from './revue'
9-
import { emailOctopusHandler } from './emailOctopus'
4+
import { buttondownSubscribe } from './buttondown'
5+
import { convertkitSubscribe } from './convertkit'
6+
import { mailchimpSubscribe } from './mailchimp'
7+
import { klaviyoSubscribe } from './klaviyo'
8+
import { revueSubscribe } from './revue'
9+
import { emailOctopusSubscribe } from './emailOctopus'
1010

1111
export interface NewsletterConfig {
1212
provider: 'buttondown' | 'convertkit' | 'klaviyo' | 'mailchimp' | 'revue' | 'emailoctopus'
@@ -31,22 +31,22 @@ async function NewsletterAPIHandler(
3131
let response: Response
3232
switch (options.provider) {
3333
case 'buttondown':
34-
response = await buttondownHandler(req)
34+
response = await buttondownSubscribe(email)
3535
break
3636
case 'convertkit':
37-
response = await convertkitHandler(req)
37+
response = await convertkitSubscribe(email)
3838
break
3939
case 'mailchimp':
40-
response = await mailchimpHandler(req)
40+
response = await mailchimpSubscribe(email)
4141
break
4242
case 'klaviyo':
43-
response = await klaviyoHandler(req)
43+
response = await klaviyoSubscribe(email)
4444
break
4545
case 'revue':
46-
response = await revueHandler(req)
46+
response = await revueSubscribe(email)
4747
break
4848
case 'emailoctopus':
49-
response = await emailOctopusHandler(req)
49+
response = await emailOctopusSubscribe(email)
5050
break
5151
default:
5252
res.status(500).json({ error: `${options.provider} not supported` })
@@ -61,30 +61,30 @@ async function NewsletterAPIHandler(
6161
}
6262

6363
async function NewsletterRouteHandler(req: NextRequest, options: NewsletterConfig) {
64-
const res = await req.json()
65-
if (!res.email) {
64+
const { email } = await req.json()
65+
if (!email) {
6666
return NextResponse.json({ error: 'Email is required' }, { status: 400 })
6767
}
6868
try {
6969
let response: Response
7070
switch (options.provider) {
7171
case 'buttondown':
72-
response = await buttondownHandler(req)
72+
response = await buttondownSubscribe(email)
7373
break
7474
case 'convertkit':
75-
response = await convertkitHandler(req)
75+
response = await convertkitSubscribe(email)
7676
break
7777
case 'mailchimp':
78-
response = await mailchimpHandler(req)
78+
response = await mailchimpSubscribe(email)
7979
break
8080
case 'klaviyo':
81-
response = await klaviyoHandler(req)
81+
response = await klaviyoSubscribe(email)
8282
break
8383
case 'revue':
84-
response = await revueHandler(req)
84+
response = await revueSubscribe(email)
8585
break
8686
case 'emailoctopus':
87-
response = await emailOctopusHandler(req)
87+
response = await emailOctopusSubscribe(email)
8888
break
8989
default:
9090
return NextResponse.json({ error: `${options.provider} not supported` }, { status: 500 })

packages/pliny/src/newsletter/klaviyo.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
import { NextApiRequest } from 'next'
2-
import { NextRequest } from 'next/server'
3-
4-
export const klaviyoHandler = async (req: NextApiRequest | NextRequest) => {
5-
const { email } = req.body
1+
export const klaviyoSubscribe = async (email: string) => {
62
const API_KEY = process.env.KLAVIYO_API_KEY
73
const LIST_ID = process.env.KLAVIYO_LIST_ID
84
const response = await fetch(

packages/pliny/src/newsletter/mailchimp.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
1-
import { NextApiRequest } from 'next'
2-
import { NextRequest } from 'next/server'
31
import mailchimp from '@mailchimp/mailchimp_marketing'
42

53
mailchimp.setConfig({
64
apiKey: process.env.MAILCHIMP_API_KEY,
75
server: process.env.MAILCHIMP_API_SERVER, // E.g. us1
86
})
97

10-
export const mailchimpHandler = async (req: NextApiRequest | NextRequest) => {
11-
const { email } = req.body
12-
8+
export const mailchimpSubscribe = async (email: string) => {
139
const response = await mailchimp.lists.addListMember(process.env.MAILCHIMP_AUDIENCE_ID, {
1410
email_address: email,
1511
status: 'subscribed',

0 commit comments

Comments
 (0)