UNPKG

@fontoxml/fontoxml-development-tools

Version:

Development tools for Fonto.

66 lines (60 loc) 1.71 kB
import correlationIdRepository from './correlationIdRepository.js'; import EARLY_RETURN_SYMBOL from './review-annotations/EarlyReturnSymbol.js'; import mapAnnotationResult from './review-annotations/mapAnnotationResult.js'; export default function configureReviewAnnotationGetPostRouteHandler( annotationDatabase, debugConfiguration ) { return (req, res) => { const { annotationIds } = req.body; const editSessionToken = req.body.context ? req.body.context.editSessionToken : correlationIdRepository.getEditSessionTokenForRequest(req); if (!annotationIds || !annotationIds.length) { res.status(400).send( 'Missing at least one item in "annotationIds" in the request.' ); return; } debugConfiguration .getTimeoutConfigForRoute( req.cms, editSessionToken, '/review/annotation/get', 'POST' ) .then((timeoutSet) => { if (timeoutSet) { return Promise.reject(EARLY_RETURN_SYMBOL); } return debugConfiguration.getDebugConfigurationForAnnotationGet( req.cms, editSessionToken ); }) .then((debugStatusGetCode) => { if (debugStatusGetCode) { res.status(debugStatusGetCode).end(); return Promise.reject(EARLY_RETURN_SYMBOL); } const currentSession = req.getFontoSession(editSessionToken); return annotationDatabase.getAnnotations( req.cms, currentSession, annotationIds ); }) .then((annotations) => { res.set('content-type', 'application/json; charset=utf-8').json( { annotations: annotations.map(mapAnnotationResult), } ); }) .catch((error) => { if (error !== EARLY_RETURN_SYMBOL) { res.status(500).send(error); } }); }; }