import express, {Request, Response} from 'express'; import * as CommentService from './routeComments.service'; import {Guid} from 'guid-typescript'; import logger from '../../../middleware/logger'; import {RouteComment} from './RouteComment.interface'; import {verifyCaptcha} from '../common/VerifyCaptcha'; export const routeCommentsRouter = express.Router(); routeCommentsRouter.get('/by/route/:id', async (req: Request, res: Response) => { try { let route_id = req.params.id; const comments: RouteComment[] = await CommentService.findByRoute(route_id); res.status(200).send(comments); } catch (e) { let errorGuid = Guid.create().toString(); logger.error('Error handling a request: ' + e.message, {reference: errorGuid}); res.status(500).send({ 'status': 'PROCESSING_ERROR', 'message': 'Internal Server Error. Try again later.', 'reference': errorGuid }); } }); routeCommentsRouter.post('/', async (req: Request, res: Response) => { try { let route_id = req.query.route_id as string; let comment = req.query.comment as string; let captcha_token = req.query['h-captcha-response'] as string; if (!route_id || !comment || !captcha_token) { res.status(400).send({'message': 'Missing parameters'}); return; } // Verify captcha if (!await verifyCaptcha(captcha_token)) { res.status(403).send({'message': 'Invalid Captcha. Please try again.'}); return; } let result = await CommentService.createComment(route_id, comment); if (result) { res.status(201).send({'comment_id': result}); } else { res.status(500).send({}); } } catch (e) { let errorGuid = Guid.create().toString(); logger.error('Error handling a request: ' + e.message, {reference: errorGuid}); res.status(500).send({ 'status': 'PROCESSING_ERROR', 'message': 'Internal Server Error. Try again later.', 'reference': errorGuid }); } });