Skip to content

Commit

Permalink
Better handling for invalid feed config
Browse files Browse the repository at this point in the history
  • Loading branch information
trevorsharp committed Jan 6, 2025
1 parent b1e58c4 commit b2c4522
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 9 deletions.
4 changes: 4 additions & 0 deletions src/app/[feedId]/feed/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";

Expand Down
15 changes: 6 additions & 9 deletions src/services/compressionService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,11 @@ const compressModConfig = async (modConfig: ModConfig): Promise<string> => {
return Buffer.from(compressedText).toString("hex");
};

const decompressModConfig = async (compressedText: string): Promise<ModConfig> => {
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<ModConfig | undefined> =>
decompress(Buffer.from(compressedText, "hex"))
.then((decompressedText) => Buffer.from(decompressedText).toString())
.then(JSON.parse)
.then((data) => modConfigSchema.parse(data))
.catch(() => undefined);

export { compressModConfig, decompressModConfig };

0 comments on commit b2c4522

Please sign in to comment.