Files
firecrawl/apps/api/src/services/idempotency/validate.ts
T

36 lines
980 B
TypeScript
Raw Normal View History

2024-05-07 15:29:27 -03:00
import { Request } from "express";
import { supabase_service } from "../supabase";
2024-05-23 11:47:04 -03:00
import { validate as isUuid } from 'uuid';
2024-07-25 09:48:06 -03:00
import { Logger } from "../../../src/lib/logger";
2024-05-07 15:29:27 -03:00
export async function validateIdempotencyKey(
req: Request,
): Promise<boolean> {
const idempotencyKey = req.headers['x-idempotency-key'];
if (!idempotencyKey) {
// // not returning for missing idempotency key for now
return true;
}
// Ensure idempotencyKey is treated as a string
const key = Array.isArray(idempotencyKey) ? idempotencyKey[0] : idempotencyKey;
if (!isUuid(key)) {
2024-07-25 09:48:06 -03:00
Logger.debug("Invalid idempotency key provided in the request headers.");
return false;
}
2024-05-07 15:29:27 -03:00
const { data, error } = await supabase_service
.from("idempotency_keys")
.select("key")
.eq("key", idempotencyKey);
if (error) {
2024-07-25 09:48:06 -03:00
Logger.error(`Error validating idempotency key: ${error}`);
2024-05-07 15:29:27 -03:00
}
if (!data || data.length === 0) {
return true;
}
return false;
}