From 5551086ed4de3a3e64a891a2e9d69ee359d6fa6b Mon Sep 17 00:00:00 2001 From: andres Date: Tue, 20 Aug 2024 19:15:38 +0200 Subject: [PATCH] initial commit --- .env | 1 + .idea/git_toolbox_prj.xml | 15 +++++++++++++++ .idea/jsLibraryMappings.xml | 6 ++++++ .idea/vcs.xml | 6 ++++++ Dockerfile | 17 +++++++++++++++++ bun.lockb | Bin 0 -> 5635 bytes package.json | 3 ++- src/index.ts | 27 ++++++++++++++++++++++++--- 8 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 .env create mode 100644 .idea/git_toolbox_prj.xml create mode 100644 .idea/jsLibraryMappings.xml create mode 100644 .idea/vcs.xml create mode 100644 Dockerfile create mode 100644 bun.lockb diff --git a/.env b/.env new file mode 100644 index 0000000..0dd6bde --- /dev/null +++ b/.env @@ -0,0 +1 @@ +PORT=4321 \ No newline at end of file diff --git a/.idea/git_toolbox_prj.xml b/.idea/git_toolbox_prj.xml new file mode 100644 index 0000000..02b915b --- /dev/null +++ b/.idea/git_toolbox_prj.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml new file mode 100644 index 0000000..d23208f --- /dev/null +++ b/.idea/jsLibraryMappings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9a8f42e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM oven/bun + +WORKDIR /app + +COPY package.json . +COPY bun.lockb . + +RUN bun install --production + +COPY src src +COPY tsconfig.json . +# COPY public public + +ENV NODE_ENV production +CMD ["bun", "src/index.ts"] + +EXPOSE 4444 \ No newline at end of file diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..74937b3e1280401b557459216cb93d0c4d02ee90 GIT binary patch literal 5635 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index bcf9248..755ea3b 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "dev": "bun run --watch src/index.ts" }, "dependencies": { - "elysia": "latest" + "elysia": "latest", + "elysia-rate-limit": "^4.1.0" }, "devDependencies": { "bun-types": "latest" diff --git a/src/index.ts b/src/index.ts index 9c1f7a1..bb3bbd4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,28 @@ -import { Elysia } from "elysia"; +import {Elysia} from "elysia"; +import {rateLimit} from "elysia-rate-limit"; -const app = new Elysia().get("/", () => "Hello Elysia").listen(3000); +const url = + "https://script.google.com/macros/s/AKfycbwHGQjf1vlKbY7UJ3h1OUTywJCgma6SlJi94WXaFBhS_93cdfHhIB0mVQBHqHRtbO4dQQ/exec"; + + +const app = new Elysia() + .use(rateLimit({ + max: 2 + })) + + .post("/", async ({body}) => { + const response = await fetch(url, { + method: "POST", + body: JSON.stringify(body), + headers: {"Content-Type": "application/json"}, + }) + + + return await response.json() + }) + + .listen(process.env.PORT ?? 4444); console.log( - `🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}` + `🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}` );