Skip to content

Commit

Permalink
Merge pull request #114 from timlrx/v2
Browse files Browse the repository at this point in the history
Fix route handlers
  • Loading branch information
timlrx authored Jul 16, 2023
2 parents c27df31 + bfb4448 commit 6c7cf77
Show file tree
Hide file tree
Showing 11 changed files with 39 additions and 52 deletions.
5 changes: 5 additions & 0 deletions .changeset/good-cheetahs-tap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'pliny': patch
---

Fix newsletter route handlers
1 change: 1 addition & 0 deletions .changeset/pre.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"changesets": [
"fuzzy-apples-judge",
"giant-geckos-dress",
"good-cheetahs-tap",
"good-knives-tan",
"great-chairs-warn",
"metal-coats-grab",
Expand Down
6 changes: 6 additions & 0 deletions packages/pliny/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# pliny

## 0.1.0-beta.6

### Patch Changes

- 21080de: Fix newsletter route handlers

## 0.1.0-beta.5

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/pliny/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
"./*": "./*",
Expand Down
6 changes: 1 addition & 5 deletions packages/pliny/src/newsletter/buttondown.ts
Original file line number Diff line number Diff line change
@@ -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`
Expand Down
6 changes: 1 addition & 5 deletions packages/pliny/src/newsletter/convertkit.ts
Original file line number Diff line number Diff line change
@@ -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/'
Expand Down
6 changes: 1 addition & 5 deletions packages/pliny/src/newsletter/emailOctopus.ts
Original file line number Diff line number Diff line change
@@ -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/'
Expand Down
40 changes: 20 additions & 20 deletions packages/pliny/src/newsletter/index.ts
Original file line number Diff line number Diff line change
@@ -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'
Expand All @@ -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` })
Expand All @@ -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 })
Expand Down
6 changes: 1 addition & 5 deletions packages/pliny/src/newsletter/klaviyo.ts
Original file line number Diff line number Diff line change
@@ -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(
Expand Down
6 changes: 1 addition & 5 deletions packages/pliny/src/newsletter/mailchimp.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
import { NextApiRequest } from 'next'
import { NextRequest } from 'next/server'
import mailchimp from '@mailchimp/mailchimp_marketing'

mailchimp.setConfig({
apiKey: process.env.MAILCHIMP_API_KEY,
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',
Expand Down
7 changes: 1 addition & 6 deletions packages/pliny/src/newsletter/revue.ts
Original file line number Diff line number Diff line change
@@ -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`
Expand Down

0 comments on commit 6c7cf77

Please sign in to comment.