From 33318ef4c684b5263df38a4fe870f9b1b0648900 Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Thu, 2 Sep 2021 18:33:52 -0400 Subject: [PATCH] Add youtube api cache --- src/app.ts | 3 +++ src/routes/youtubeApiProxy.ts | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 src/routes/youtubeApiProxy.ts diff --git a/src/app.ts b/src/app.ts index eea742f..c9fd95f 100644 --- a/src/app.ts +++ b/src/app.ts @@ -39,6 +39,7 @@ import {endpoint as getSearchSegments } from "./routes/getSearchSegments"; import {getStatus } from "./routes/getStatus"; import ExpressPromiseRouter from "express-promise-router"; import { Server } from "http"; +import { youtubeApiProxy } from "./routes/youtubeApiProxy"; export function createServer(callback: () => void): Server { // Create a service (the app object is just a callback). @@ -173,6 +174,8 @@ function setupRoutes(router: Router) { router.get("/api/status/:value", getStatus); router.get("/api/status", getStatus); + router.get("/api/youtubeApiProxy", youtubeApiProxy); + if (config.postgres) { router.get("/database", (req, res) => dumpDatabase(req, res, true)); router.get("/database.json", (req, res) => dumpDatabase(req, res, false)); diff --git a/src/routes/youtubeApiProxy.ts b/src/routes/youtubeApiProxy.ts new file mode 100644 index 0000000..fac839f --- /dev/null +++ b/src/routes/youtubeApiProxy.ts @@ -0,0 +1,21 @@ +import { Request, Response } from "express"; +import { YouTubeAPI } from "../utils/youtubeApi"; + + +export async function youtubeApiProxy(req: Request, res: Response): Promise { + if (req.query.key !== "8NpFUCMr2Gq4cy4UrUJPBfGBbRQudhJ8zzex8Gq44RYDywLt3UtbbfDap3KPDbcS") { + return res.send("Invalid key").status(403); + } + + const videoID = req.query.videoID; + if (videoID === undefined || typeof(videoID) !== "string" || videoID.length !== 11) { + return res.status(400).send("Invalid parameters"); + } + + const result = await YouTubeAPI.listVideos(videoID); + if (result.err) { + return res.send("API failure").status(500); + } else { + return res.send(result.data).status(200); + } +} \ No newline at end of file