35 lines
1.0 KiB
TypeScript
35 lines
1.0 KiB
TypeScript
import { DOMWindow } from 'jsdom'
|
|
|
|
export class BloombergHandler {
|
|
name = 'bloomberg'
|
|
|
|
shouldPrehandle = (url: URL, dom: DOMWindow): boolean => {
|
|
const host = this.name + '.com'
|
|
// check if url ends with bloomberg.com
|
|
return (
|
|
url.hostname.endsWith(host) ||
|
|
dom.document
|
|
.querySelector('.logo-image')
|
|
?.getAttribute('alt')
|
|
?.toLowerCase() === this.name
|
|
)
|
|
}
|
|
|
|
prehandle = (_url: URL, dom: DOMWindow): Promise<DOMWindow> => {
|
|
const body = dom.document.querySelector('.wrapper')
|
|
|
|
// this removes header
|
|
body?.querySelector('.sailthru-variables')?.remove()
|
|
body?.querySelector('.preview-text')?.remove()
|
|
body?.querySelector('.logo-wrapper')?.remove()
|
|
body?.querySelector('.by-the-number-wrapper')?.remove()
|
|
// this removes footer
|
|
body?.querySelector('.quote-box-wrapper')?.remove()
|
|
body?.querySelector('.header-wrapper')?.remove()
|
|
body?.querySelector('.component-wrapper')?.remove()
|
|
body?.querySelector('.footer')?.remove()
|
|
|
|
return Promise.resolve(dom)
|
|
}
|
|
}
|