From 6ea5bc3b1814538c29466d5803d38a3548d48b13 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 8 Jul 2022 12:10:32 +0800 Subject: [PATCH] fix dependecies --- packages/inbound-email-handler/src/index.ts | 18 +----------------- .../inbound-email-handler/src/newsletter.ts | 17 ++++++++++++++++- .../test/newsletter.test.ts | 3 ++- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/inbound-email-handler/src/index.ts b/packages/inbound-email-handler/src/index.ts index 9afa099b7..cbb0d7153 100644 --- a/packages/inbound-email-handler/src/index.ts +++ b/packages/inbound-email-handler/src/index.ts @@ -10,6 +10,7 @@ import { handleConfirmation, isConfirmationEmail, NewsletterHandler, + parseUnsubscribe, } from './newsletter' import { PubSub } from '@google-cloud/pubsub' import { handlePdfAttachment } from './pdf' @@ -19,16 +20,8 @@ import { BloombergHandler } from './bloomberg-handler' import { GolangHandler } from './golang-handler' import { MorningBrewHandler } from './morning-brew-handler' -interface Unsubscribe { - mailTo?: string - httpUrl?: string -} - const NON_NEWSLETTER_EMAIL_TOPIC = 'nonNewsletterEmailReceived' const pubsub = new PubSub() -const UNSUBSCRIBE_HTTP_URL_PATTERN = /<(https?:\/\/[^>]*)>/ -const UNSUBSCRIBE_MAIL_TO_PATTERN = /]*)>/ - const NEWSLETTER_HANDLERS = [ new SubstackHandler(), new AxiosHandler(), @@ -37,15 +30,6 @@ const NEWSLETTER_HANDLERS = [ new MorningBrewHandler(), ] -export const parseUnsubscribe = (unSubHeader: string): Unsubscribe => { - // parse list-unsubscribe header - // e.g. List-Unsubscribe: , - return { - mailTo: unSubHeader.match(UNSUBSCRIBE_MAIL_TO_PATTERN)?.[1], - httpUrl: unSubHeader.match(UNSUBSCRIBE_HTTP_URL_PATTERN)?.[1], - } -} - export const getNewsletterHandler = ( postHeader: string, from: string, diff --git a/packages/inbound-email-handler/src/newsletter.ts b/packages/inbound-email-handler/src/newsletter.ts index 32424039e..20ff4f867 100644 --- a/packages/inbound-email-handler/src/newsletter.ts +++ b/packages/inbound-email-handler/src/newsletter.ts @@ -1,7 +1,11 @@ import { PubSub } from '@google-cloud/pubsub' import { v4 as uuidv4 } from 'uuid' import addressparser from 'addressparser' -import { parseUnsubscribe } from './index' + +interface Unsubscribe { + mailTo?: string + httpUrl?: string +} const pubsub = new PubSub() const NEWSLETTER_EMAIL_RECEIVED_TOPIC = 'newsletterEmailReceived' @@ -10,6 +14,17 @@ const EMAIL_FORWARDING_SENDER_ADDRESSES = [ 'Gmail Team ', ] const CONFIRMATION_CODE_PATTERN = /^\(#\d+\)/ +const UNSUBSCRIBE_HTTP_URL_PATTERN = /<(https?:\/\/[^>]*)>/ +const UNSUBSCRIBE_MAIL_TO_PATTERN = /]*)>/ + +export const parseUnsubscribe = (unSubHeader: string): Unsubscribe => { + // parse list-unsubscribe header + // e.g. List-Unsubscribe: , + return { + mailTo: unSubHeader.match(UNSUBSCRIBE_MAIL_TO_PATTERN)?.[1], + httpUrl: unSubHeader.match(UNSUBSCRIBE_HTTP_URL_PATTERN)?.[1], + } +} export class NewsletterHandler { protected senderRegex = /NEWSLETTER_SENDER_REGEX/ diff --git a/packages/inbound-email-handler/test/newsletter.test.ts b/packages/inbound-email-handler/test/newsletter.test.ts index 0eb23d8eb..2d0ef1bea 100644 --- a/packages/inbound-email-handler/test/newsletter.test.ts +++ b/packages/inbound-email-handler/test/newsletter.test.ts @@ -3,12 +3,13 @@ import { getConfirmationCode, isConfirmationEmail, NewsletterHandler, + parseUnsubscribe, } from '../src/newsletter' import { SubstackHandler } from '../src/substack-handler' import { AxiosHandler } from '../src/axios-handler' import { BloombergHandler } from '../src/bloomberg-handler' import { GolangHandler } from '../src/golang-handler' -import { getNewsletterHandler, parseUnsubscribe } from '../src' +import { getNewsletterHandler } from '../src' import { MorningBrewHandler } from '../src/morning-brew-handler' describe('Confirmation email test', () => {