const fsp = require('fs').promises const qrcode = require('qrcode-terminal') const { sessionFolderPath } = require('../config') const { sendErrorResponse } = require('../utils') /** * Responds to request with 'pong' * * @function ping * @async * @param {Object} req - Express request object * @param {Object} res - Express response object * @returns {Promise} - Promise that resolves once response is sent * @throws {Object} - Throws error if response fails */ const ping = async (req, res) => { /* #swagger.tags = ['Various'] #swagger.summary = 'Health check' #swagger.description = 'Responds to request with "pong" message' #swagger.responses[200] = { description: "Response message", content: { "application/json": { example: { success: true, message: "pong" } } } } */ res.json({ success: true, message: 'pong' }) } /** * Example local callback that generates a QR code and writes a log file * * @function localCallbackExample * @async * @param {Object} req - Express request object containing a body object with dataType and data * @param {string} req.body.dataType - Type of data (in this case, 'qr') * @param {Object} req.body.data - Data to generate a QR code from * @param {Object} res - Express response object * @returns {Promise} - Promise that resolves once response is sent * @throws {Object} - Throws error if response fails */ const localCallbackExample = async (req, res) => { /* #swagger.tags = ['Various'] #swagger.summary = 'Local callback' #swagger.description = 'Used to generate a QR code and writes a log file. ONLY FOR DEVELOPMENT/TEST PURPOSES.' #swagger.responses[200] = { description: "Response message", content: { "application/json": { example: { success: true } } } } */ try { const { dataType, data } = req.body if (dataType === 'qr') { qrcode.generate(data.qr, { small: true }) } await fsp.mkdir(sessionFolderPath, { recursive: true }) await fsp.writeFile(`${sessionFolderPath}/message_log.txt`, `${JSON.stringify(req.body)}\r\n`, { flag: 'a+' }) res.json({ success: true }) } catch (error) { /* #swagger.responses[500] = { description: "Server Failure.", content: { "application/json": { schema: { "$ref": "#/definitions/ErrorResponse" } } } } */ console.log(error) sendErrorResponse(res, 500, error.message) } } module.exports = { ping, localCallbackExample }