diff --git a/package.json b/package.json index 3593b2f..8d7b17b 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "dotenv": "^16.4.5", "express": "^4.21.0", "puppeteer": "21.1.0", + "redis": "^4.7.0", "uuid": "^10.0.0" }, "devDependencies": { diff --git a/src/routes/queue-route.ts b/src/routes/queue-route.ts index 36e9fdd..6150195 100644 --- a/src/routes/queue-route.ts +++ b/src/routes/queue-route.ts @@ -3,7 +3,7 @@ const router = express.Router(); import { v4 } from "uuid"; import { queue, queueEvents}from "../utils/queue-client"; import {Job} from "bullmq"; - +import {redisClient} from "../utils/redis-client"; type response = { path: string @@ -12,9 +12,11 @@ type response = { router.post("/pdf", async (req: Request, res: Response) => { try { let apiKey = req.headers["x-api-key"]; - if (apiKey != process.env.API_KEY) { - throw new Error("Invalid Api Key"); + let valid = await redisClient.get(`tokens:${apiKey}`); + if(!valid) { + throw new Error("Api Key Wrong Or Expired"); } + const { task } = req.body; let job: Job|undefined = await queue.add(v4(),task); diff --git a/src/utils/redis-client.ts b/src/utils/redis-client.ts new file mode 100644 index 0000000..364e128 --- /dev/null +++ b/src/utils/redis-client.ts @@ -0,0 +1,16 @@ +import { createClient } from 'redis'; +import {queue} from "./queue-client"; + +export const redisClient = createClient( + { + url: `redis://${process.env.REDIS_USERNAME}:${process.env.REDIS_PASSWORD}@${process.env.REDIS_HOST}:${process.env.REDIS_PORT}/${process.env.REDIS_TOKEN_DB_INDEX}` + } +); + +redisClient.on('error', err => console.log('Redis Client Error', err)); + +redisClient.connect().then(() => { + console.log("Redis Client Connected"); +}).catch(reason => { + console.log("Redis Client Connection Failed", reason); +}) \ No newline at end of file