From 35ce955b003f3f524b7c1f614d0685ced1c7265b Mon Sep 17 00:00:00 2001 From: valadaptive Date: Mon, 4 Dec 2023 12:56:22 -0500 Subject: [PATCH] Use Express router for serpapi endpoint --- server.js | 2 +- src/endpoints/serpapi.js | 59 ++++++++++++++++++---------------------- 2 files changed, 28 insertions(+), 33 deletions(-) diff --git a/server.js b/server.js index a0b24bb5b..3442b6dfb 100644 --- a/server.js +++ b/server.js @@ -3624,7 +3624,7 @@ require('./src/endpoints/classify').registerEndpoints(app, jsonParser); require('./src/endpoints/caption').registerEndpoints(app, jsonParser); // Web search extension -require('./src/endpoints/serpapi').registerEndpoints(app, jsonParser); +app.use('/api/serpapi', require('./src/endpoints/serpapi').router); const tavernUrl = new URL( (cliArguments.ssl ? 'https://' : 'http://') + diff --git a/src/endpoints/serpapi.js b/src/endpoints/serpapi.js index 6dd12062f..1a6c9926b 100644 --- a/src/endpoints/serpapi.js +++ b/src/endpoints/serpapi.js @@ -1,39 +1,34 @@ const fetch = require('node-fetch').default; +const express = require('express'); const { readSecret, SECRET_KEYS } = require('./secrets'); +const { jsonParser } = require('../express-common'); -/** - * Registers the SerpApi endpoints. - * @param {import("express").Express} app - * @param {any} jsonParser - */ -function registerEndpoints(app, jsonParser) { - app.post('/api/serpapi/search', jsonParser, async (request, response) => { - try { - const key = readSecret(SECRET_KEYS.SERPAPI); +const router = express.Router(); - if (!key) { - console.log('No SerpApi key found'); - return response.sendStatus(401); - } +router.post('/search', jsonParser, async (request, response) => { + try { + const key = readSecret(SECRET_KEYS.SERPAPI); - const { query } = request.body; - const result = await fetch(`https://serpapi.com/search.json?q=${encodeURIComponent(query)}&api_key=${key}`); - - if (!result.ok) { - const text = await result.text(); - console.log('SerpApi request failed', result.statusText, text); - return response.status(500).send(text); - } - - const data = await result.json(); - return response.json(data); - } catch (error) { - console.log(error); - return response.sendStatus(500); + if (!key) { + console.log('No SerpApi key found'); + return response.sendStatus(401); } - }); -} -module.exports = { - registerEndpoints, -}; + const { query } = request.body; + const result = await fetch(`https://serpapi.com/search.json?q=${encodeURIComponent(query)}&api_key=${key}`); + + if (!result.ok) { + const text = await result.text(); + console.log('SerpApi request failed', result.statusText, text); + return response.status(500).send(text); + } + + const data = await result.json(); + return response.json(data); + } catch (error) { + console.log(error); + return response.sendStatus(500); + } +}); + +module.exports = { router };