1
0
mirror of https://github.com/comatory/fb2iCal synced 2025-02-17 12:10:36 +01:00
2020-07-23 17:23:04 +02:00

36 lines
971 B
JavaScript

const parseUsingLDJSONData = require('./ldjson-parser')
const parseUsingDOM = require('./dom-parser')
const generateICS = require('./ics-generator')
const { createParserError, getNormalizedUrl } = require('../utils')
const extractEventDataFromHTML = (html, url, { logger }) => {
const LDJSONEventData = parseUsingLDJSONData(html, { logger })
const rawEventData = LDJSONEventData || parseUsingDOM(html, { logger })
if (!rawEventData) {
throw createParserError()
return
}
const eventData = {
...rawEventData,
url: rawEventData.url || getNormalizedUrl(url),
}
return eventData
}
const retrieveICS = async (URLparameter, { logger, crawl }) => {
const url = getNormalizedUrl(URLparameter)
const html = await crawl(url, { logger })
const eventData = extractEventDataFromHTML(html, url, { logger })
const icsContent = await generateICS(eventData)
return icsContent
}
module.exports = {
retrieveICS,
extractEventDataFromHTML,
}