Add youtube api cache

This commit is contained in:
Ajay Ramachandran
2021-09-02 18:33:52 -04:00
parent 2a284d7f25
commit 33318ef4c6
2 changed files with 24 additions and 0 deletions

View File

@@ -39,6 +39,7 @@ import {endpoint as getSearchSegments } from "./routes/getSearchSegments";
import {getStatus } from "./routes/getStatus"; import {getStatus } from "./routes/getStatus";
import ExpressPromiseRouter from "express-promise-router"; import ExpressPromiseRouter from "express-promise-router";
import { Server } from "http"; import { Server } from "http";
import { youtubeApiProxy } from "./routes/youtubeApiProxy";
export function createServer(callback: () => void): Server { export function createServer(callback: () => void): Server {
// Create a service (the app object is just a callback). // 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/:value", getStatus);
router.get("/api/status", getStatus); router.get("/api/status", getStatus);
router.get("/api/youtubeApiProxy", youtubeApiProxy);
if (config.postgres) { if (config.postgres) {
router.get("/database", (req, res) => dumpDatabase(req, res, true)); router.get("/database", (req, res) => dumpDatabase(req, res, true));
router.get("/database.json", (req, res) => dumpDatabase(req, res, false)); router.get("/database.json", (req, res) => dumpDatabase(req, res, false));

View File

@@ -0,0 +1,21 @@
import { Request, Response } from "express";
import { YouTubeAPI } from "../utils/youtubeApi";
export async function youtubeApiProxy(req: Request, res: Response): Promise<Response> {
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);
}
}