mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2025-07-25 11:00:07 +02:00
42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
import logger from '@overleaf/logger'
|
|
import BibtexParser from './bib2json.js'
|
|
|
|
export default {
|
|
async index(req, res) {
|
|
const { docUrls, fullIndex } = req.body
|
|
try {
|
|
const responses = await Promise.all(
|
|
docUrls.map(async (docUrl) => {
|
|
try {
|
|
const response = await fetch(docUrl)
|
|
if (!response.ok) {
|
|
throw new Error(`HTTP error! status: ${response.status}`)
|
|
}
|
|
return response.text()
|
|
} catch (error) {
|
|
logger.error({ error }, "Failed to fetch document from URL: " + docUrl)
|
|
return null
|
|
}
|
|
})
|
|
)
|
|
const keys = []
|
|
for (const body of responses) {
|
|
if (!body) continue
|
|
|
|
try {
|
|
const parsedEntries = BibtexParser(body).entries
|
|
const ks = parsedEntries
|
|
.filter(entry => entry.EntryKey)
|
|
.map(entry => entry.EntryKey)
|
|
keys.push(...ks)
|
|
} catch (error) {
|
|
logger.error({ error }, "bib file skipped.")
|
|
}
|
|
}
|
|
res.status(200).json({ keys })
|
|
} catch (error) {
|
|
logger.error({ error }, "Unexpected error during indexing process.")
|
|
res.status(500).json({ error: "Failed to process bib files." })
|
|
}
|
|
}
|
|
}
|