diff --git a/src/app/[feedId]/feed/route.ts b/src/app/[feedId]/feed/route.ts index cc3cb6a..3aa3f0d 100644 --- a/src/app/[feedId]/feed/route.ts +++ b/src/app/[feedId]/feed/route.ts @@ -12,6 +12,10 @@ const GET = async (request: Request, { params }: { params: { feedId: string } }) host && request.url ? new URL(`http://${host}${request.url}`).searchParams : undefined; const modConfig = await decompressModConfig(feedId); + if (!modConfig) { + return new NextResponse("Bad Request - Invalid feed parameter in URL", { status: 400 }); + } + const feedData = await fetchFeedData(modConfig.sources, searchParams); if (!feedData) throw "Could not find feed data for sources"; diff --git a/src/services/compressionService.ts b/src/services/compressionService.ts index b05054a..b8e352d 100644 --- a/src/services/compressionService.ts +++ b/src/services/compressionService.ts @@ -7,14 +7,11 @@ const compressModConfig = async (modConfig: ModConfig): Promise => { return Buffer.from(compressedText).toString("hex"); }; -const decompressModConfig = async (compressedText: string): Promise => { - const decompressedText = await decompress(Buffer.from(compressedText, "hex")); - const rawModConfig = JSON.parse(Buffer.from(decompressedText).toString()) as unknown; - const modConfig = modConfigSchema.safeParse(rawModConfig); - - if (!modConfig.success) throw `Error - Invalid configuration - ${modConfig.error.message}`; - - return modConfig.data; -}; +const decompressModConfig = async (compressedText: string): Promise => + decompress(Buffer.from(compressedText, "hex")) + .then((decompressedText) => Buffer.from(decompressedText).toString()) + .then(JSON.parse) + .then((data) => modConfigSchema.parse(data)) + .catch(() => undefined); export { compressModConfig, decompressModConfig };