From 5c19b8e40c359997ec6537297ceaecde8b8f9385 Mon Sep 17 00:00:00 2001 From: Nfrederiksen Date: Thu, 20 Feb 2025 09:59:08 +0100 Subject: [PATCH] fix merge issue --- api/routes.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/api/routes.js b/api/routes.js index 9c1dfef..c85ca39 100644 --- a/api/routes.js +++ b/api/routes.js @@ -1358,5 +1358,68 @@ module.exports = (fastify, opt, next) => { return handleAdRequest(req, reply, type); }); + /** + * GET endpoint to retrieve VAST XML for Pause Ads. + */ + fastify.get("/pause-ad", { schema: schemas["GET/pause-ad"] }, async (req, reply) => { + try { + logger.info(req.query, { + label: req.headers["host"], + }); + CloudWatchLog("PAUSE_AD_REQUESTED", req.headers["host"], {}); + + const params = Object.assign(req.query, { + acceptLang: req.headers["accept-language"] || "Not Found", + host: req.headers["host"], + userAgent: req.headers["user-agent"] || "Not Found", + uip: req.headers["x-forwarded-for"] || req.socket.remoteAddress || "Not Found", + rf: RESPONSE_FORMATS.PAUSE_AD, + width: req.query.width ? parseInt(req.query.width) : undefined, + height: req.query.height ? parseInt(req.query.height) : undefined, + }); + + const session = new Session(params); + const result = await DBAdapter.AddSessionToStorage(session); + if (!result) { + logger.error("Could not store new session", { + label: params.host, + sessionId: session.sessionId, + }); + reply.code(404).send({ + message: "Could not store new session", + }); + return; + } + + const pauseAdVast = session.getPauseAdVast(); + if (!pauseAdVast) { + logger.error("Pause Ad VAST not found", { + label: params.host, + sessionId: session.sessionId, + }); + reply.code(404).send({ + message: "Pause Ad VAST not found", + }); + return; + } + + logger.info("Returned Pause Ad VAST and created a session", { + label: req.headers["host"], + sessionId: session.sessionId, + }); + CloudWatchLog("PAUSE_AD_RETURNED", req.headers["host"], { + session: session.sessionId, + }); + + reply.header("Content-Type", "application/xml; charset=utf-8"); + reply.code(200).send(pauseAdVast); + } catch (exc) { + logger.error(exc, { + label: req.headers["host"], + }); + reply.code(500).send({ message: exc.message }); + } + }); + next(); }; \ No newline at end of file