UNPKG

url-metadata

Version:

Request a url and scrape the metadata from its HTML using Node.js or the browser.

52 lines (47 loc) 1.97 kB
const urlMetadata = require('./../index') test('EUC-JP charset auto-detected in `Content-Type` response header', async () => { const url = 'https://item.rakuten.co.jp/amely/c/0000000101/' const title = '【楽天市場】レ' try { const metadata = await urlMetadata(url) // Test decoding: expect(metadata.title).toContain(title) } catch (err) { expect(err).toBe(undefined) } }) test('User-specified opts.decode=windows-1251 (Cyrillic)', async () => { const url = 'https://sattvinfo.net/' const title = 'спутниковое телевидение, установка и настройка спутникового телевидения ' try { const metadata = await urlMetadata(url, { decode: 'windows-1251' }) // If this breaks, it means the test is broken & we need a diff example url: expect(metadata['Content-Type']).toBe('text/html; charset=windows-1251') // Test decoding: expect(metadata.title).toBe(title) } catch (err) { expect(err).toBe(undefined) } }) // ex: <meta charset="windows-1251"> (note: there are two charset meta tags on this page for some reason) test('charset=windows-1251 (Cyrillic) auto-detected in meta tag', async () => { const url = 'https://sattvinfo.net/' const title = 'спутниковое телевидение, установка и настройка спутникового телевидения ' try { const metadata = await urlMetadata(url) // If this breaks, it means the test is broken & we need a diff example url: expect(metadata['Content-Type']).toBe('text/html; charset=windows-1251') // Test decoding: expect(metadata.title).toBe(title) } catch (err) { expect(err).toBe(undefined) } }) test('throws error with bad opts.decode', async () => { const url = 'https://www.npmjs.com/package/url-metadata' try { await urlMetadata(url, { decode: 'FOO-BAR' }) } catch (err) { expect(err).toBeDefined() } })