mirror of
https://github.com/comatory/fb2iCal
synced 2025-02-12 09:40:36 +01:00
27 lines
765 B
JavaScript
27 lines
765 B
JavaScript
const parseUsingLDJSONData = require('./ldjson-parser')
|
|
const parseUsingDOM = require('./dom-parser')
|
|
const generateICS = require('./ics-generator')
|
|
const { createParserError, getNormalizedUrl } = require('../utils')
|
|
|
|
const retrieveICS = async (URLparameter, { logger, crawl }) => {
|
|
const url = getNormalizedUrl(URLparameter)
|
|
const html = await crawl(url, { logger })
|
|
const LDJSONEventData = parseUsingLDJSONData(html, { logger })
|
|
const rawEventData = LDJSONEventData || parseUsingDOM(html, { logger })
|
|
|
|
if (!rawEventData) {
|
|
throw createParserError()
|
|
return
|
|
}
|
|
|
|
const eventData = {
|
|
...rawEventData,
|
|
url: rawEventData.url || url,
|
|
}
|
|
|
|
const icsContent = await generateICS(eventData)
|
|
return icsContent
|
|
}
|
|
|
|
module.exports = retrieveICS
|