Save fs.blog newsletter correctly
This commit is contained in:
@ -8,10 +8,13 @@ export class ConvertkitHandler extends ContentHandler {
|
||||
}
|
||||
|
||||
findNewsletterHeaderHref(dom: Document): string | undefined {
|
||||
const readOnline = dom.querySelectorAll('table tr td a')
|
||||
const readOnline = dom.querySelectorAll('a')
|
||||
let res: string | undefined = undefined
|
||||
readOnline.forEach((e) => {
|
||||
if (e.textContent === 'View this email in your browser') {
|
||||
if (
|
||||
e.textContent === 'View this email in your browser' ||
|
||||
e.textContent === 'Read on FS'
|
||||
) {
|
||||
res = e.getAttribute('href') || undefined
|
||||
}
|
||||
})
|
||||
@ -27,7 +30,7 @@ export class ConvertkitHandler extends ContentHandler {
|
||||
const dom = parseHTML(input.html).document
|
||||
return Promise.resolve(
|
||||
dom.querySelectorAll(
|
||||
'img[src*="convertkit.com"], img[src*="convertkit-mail.com"]'
|
||||
'img[src*="convertkit.com"], img[src*="convertkit-mail"]'
|
||||
).length > 0
|
||||
)
|
||||
}
|
||||
|
||||
1292
packages/content-handler/test/data/convertkit-newsletter.html
Normal file
1292
packages/content-handler/test/data/convertkit-newsletter.html
Normal file
File diff suppressed because it is too large
Load Diff
@ -12,6 +12,7 @@ import nock from 'nock'
|
||||
import { generateUniqueUrl } from '../src/content-handler'
|
||||
import fs from 'fs'
|
||||
import { BeehiivHandler } from '../src/newsletters/beehiiv-handler'
|
||||
import { ConvertkitHandler } from '../src/newsletters/convertkit-handler'
|
||||
|
||||
chai.use(chaiAsPromised)
|
||||
chai.use(chaiString)
|
||||
@ -147,6 +148,17 @@ describe('Newsletter email test', () => {
|
||||
})
|
||||
).to.eventually.be.true
|
||||
})
|
||||
it('returns true for convertkit newsletter', async () => {
|
||||
const html = load('./test/data/convertkit-newsletter.html')
|
||||
await expect(
|
||||
new ConvertkitHandler().isNewsletter({
|
||||
html,
|
||||
postHeader: '',
|
||||
from: '',
|
||||
unSubHeader: '',
|
||||
})
|
||||
).to.eventually.be.true
|
||||
})
|
||||
})
|
||||
|
||||
describe('findNewsletterUrl', async () => {
|
||||
@ -203,6 +215,30 @@ describe('Newsletter email test', () => {
|
||||
}).timeout(10000)
|
||||
})
|
||||
|
||||
context('when email is from convertkit', () => {
|
||||
before(() => {
|
||||
nock('https://u25184427.ct.sendgrid.net')
|
||||
.head(
|
||||
'/ls/click?upn=MnmHBiCwIPe9TmIJeskmA7wDTJvdVU1ACmSJ753YuhScf71JWthxqM8RnVh-2FZG0rYzrbR04P99S2ld2OkTtQmrx2FDwArpYdk5N0jVpN9dLBZ-2BdPNqkRHxNvuygY8-2F-2FtRNFoPjxjtTuyWM6L3tcYDYnAnL2xCueddWcFlUNrQWsvLotmgvC-2BrQc7bxsZhW0pUBmS_vVXscVLXlj5UtQe3aqo5RMTdTq2PepdZjP86UOmA8nzSBnnaDN-2FNHWDodWnbUOPZ063v3w3z8QtcaPpE1qNu8xYkNJJFb-2F1uZEG-2BzsLfyDkjvvVX5zYs5OyyRYlhMOlXDJcr4-2FtMrFwii0uFAvwbhxDdnTxEpi-2F7maufyH39AEO-2BtCeSUg5V4FM43UpI1zUSXeWK-2Fh5JumSmR5XhrrRAig-3D-3D'
|
||||
)
|
||||
.reply(302, undefined, {
|
||||
Location: 'https://fs.blog/brain-food/october-16-2022/',
|
||||
})
|
||||
.get('/brain-food/october-16-2022/')
|
||||
.reply(200, '')
|
||||
})
|
||||
|
||||
after(() => {
|
||||
nock.restore()
|
||||
})
|
||||
|
||||
it('gets the URL from the header', async () => {
|
||||
const html = load('./test/data/convertkit-newsletter.html')
|
||||
const url = await new ConvertkitHandler().findNewsletterUrl(html)
|
||||
expect(url).to.startWith('https://fs.blog/brain-food/october-16-2022/')
|
||||
}).timeout(10000)
|
||||
})
|
||||
|
||||
it('returns undefined if it is not a newsletter', async () => {
|
||||
const html = load('./test/data/substack-forwarded-welcome-email.html')
|
||||
const url = await new SubstackHandler().findNewsletterUrl(html)
|
||||
|
||||
Reference in New Issue
Block a user