diff --git a/src/routes/norad.ts b/src/routes/norad.ts index 47a701e..4cd8ee5 100644 --- a/src/routes/norad.ts +++ b/src/routes/norad.ts @@ -1,11 +1,22 @@ import { Elysia } from "elysia"; +import limiter from "../utils/ratelimiter"; import tleGetter from "../utils/tleGetter"; -const noradRoute = new Elysia({ prefix: "/norad" }).get("/:id", async ({ params }) => { - const noradId = parseInt(params.id, 10); - const tleData = await tleGetter(noradId); - return new Response(tleData, { headers: { "Content-Type": "text/plain", "Cache-Control": "max-age=3600" } }); -}); +const noradRoute = new Elysia({ prefix: "/norad" }) + .use(limiter) + .get("/:id", async ({ params }) => { + const noradId = parseInt(params.id, 10); + + if (isNaN(noradId) || noradId < 1 || noradId > 999999) { + return new Response("Invalid NORAD ID. Must be a positive integer between 1 and 999999.", { + status: 400, + headers: { "Content-Type": "text/plain" }, + }); + } + + const tleData = await tleGetter(noradId); + return new Response(tleData, { headers: { "Content-Type": "text/plain", "Cache-Control": "max-age=3600" } }); + }); export default noradRoute;