diff --git a/packages/api/src/utils/bloomberg-handler.ts b/packages/api/src/utils/bloomberg-handler.ts index a58597114..da2fef9b5 100644 --- a/packages/api/src/utils/bloomberg-handler.ts +++ b/packages/api/src/utils/bloomberg-handler.ts @@ -6,7 +6,13 @@ export class SubstackHandler { shouldPrehandle = (url: URL, dom: DOMWindow): boolean => { const host = this.name + '.com' // check if url ends with bloomberg.com - return url.hostname.endsWith(host) + return ( + url.hostname.endsWith(host) || + dom.document + .querySelector('.logo-image') + ?.getAttribute('alt') + ?.toLowerCase() === this.name + ) } prehandle = (url: URL, dom: DOMWindow): Promise => { diff --git a/packages/inbound-email-handler/src/newsletter.ts b/packages/inbound-email-handler/src/newsletter.ts index 56a56a0be..2c384c485 100644 --- a/packages/inbound-email-handler/src/newsletter.ts +++ b/packages/inbound-email-handler/src/newsletter.ts @@ -7,10 +7,11 @@ const EMAIL_FORWARDING_SENDER_ADDRESSES = [ 'Gmail Team ', ] const NEWSLETTER_SENDER_REGEX = - '<.+@((axios.com)|(mail.bloombergbusiness.com))>' -const CONFIRMATION_CODE_PATTERN = '^\\(#\\d+\\)' -const AXIOS_URL_PATTERN = 'View in browser at <.+>' -const BLOOMBERG_URL_PATTERN = '' + /<.+@((axios.com)|(mail.bloombergbusiness.com))>/ +const CONFIRMATION_CODE_PATTERN = /^\\(#\\d+\\)/ +const AXIOS_URL_PATTERN = /View in browser at (.*)<\/a>/ +const BLOOMBERG_URL_PATTERN = + / { console.log('confirmation email') @@ -116,19 +117,15 @@ export const getNewsletterUrl = ( } // axios newsletter url from html - let re = new RegExp(AXIOS_URL_PATTERN) - let matches = html.match(re) + let matches = html.match(AXIOS_URL_PATTERN) if (matches) { - const match = matches[0] - return match.slice(match.indexOf('>') + 1, match.lastIndexOf('<')) + return matches[1] } // bloomberg newsletter url from html - re = new RegExp(BLOOMBERG_URL_PATTERN) - matches = html.match(re) + matches = html.match(BLOOMBERG_URL_PATTERN) if (matches) { - const match = matches[0] - return match.slice(match.indexOf('href=') + 1, match.lastIndexOf('style')) + return matches[1] } return undefined } diff --git a/packages/inbound-email-handler/test/newsletter.test.ts b/packages/inbound-email-handler/test/newsletter.test.ts index 0640bea12..4fa65485b 100644 --- a/packages/inbound-email-handler/test/newsletter.test.ts +++ b/packages/inbound-email-handler/test/newsletter.test.ts @@ -46,10 +46,23 @@ describe('Newsletter email test', () => { it('returns url when email is from Axios', () => { const rawUrl = '' - const html = `View in browser at https://axios.com/blog/2019/02/28/the-best-way-to-build-a-web-app` + const html = `View in browser at https://axios.com/blog/the-best-way-to-build-a-web-app` expect(getNewsletterUrl(rawUrl, html)).to.equal( - 'https://axios.com/blog/2019/02/28/the-best-way-to-build-a-web-app' + 'https://axios.com/blog/the-best-way-to-build-a-web-app' + ) + }) + + it('returns url when email is from Bloomberg', () => { + const rawUrl = '' + const html = ` + + View in browser + + ` + + expect(getNewsletterUrl(rawUrl, html)).to.equal( + 'https://www.bloomberg.com/news/google-is-now-a-partner' ) }) })