From b1331619230dfd039da10030847a3c82484c2514 Mon Sep 17 00:00:00 2001 From: Yuzu Date: Wed, 2 Oct 2024 16:09:42 +0700 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20Switched=20to=20ElysiaJS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bun.lockb | Bin 14003 -> 17688 bytes package.json | 4 +++- src/index.ts | 41 +++++++++++++++++++---------------------- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/bun.lockb b/bun.lockb index a1f4f6702d305a0954217c6826b5ceedf3c5e5cf..1902af8d7e72e78417b6eed07ecf951e6b946ad2 100644 GIT binary patch delta 4869 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 delta 2782 zcmcguYiv|S6rMZ#xO@Aguf4n5?RMKODAHZp-R^FAc#CKROnGR;mL^n?LL`AAv}vkQ z+aP~1h$SZ`rQ(b5Lqa5wB7p=6M*kq#h=D}PtJM&w2?P@pW5nWj?%suN!sD0B=FGQe zzB4oDoVoYR?SEexT;CU&dZwvA=jgzs*2J#f@@FRx12tf=Lx^nPhtP|Fn}NB&YZxyF{tPSuc3_<6w^X&2P!y`0~#tUQz@L%N9Rb>{q zHeacxowf$0ozA1*LtcA>_B(85!`4Bgwxm{%_#2_wXr-f`&f6R0A%$9;h8$C90B}Ll zFd%3npK54Jk&rrAD^%f3%8zU`pc?X=jfMfLoqR4sTWlBNd2_*02TbfV;4orb}c zBmR1D#WboWWs`$iG(-CsgGqDEFYHO_bkeY9$Q4fVWf|I+P9bKcIqf$~lf;(QDh+2D za-&MVY(pMVsReLHrGacidj)yojhr+J%k3`ml19ThhGQEB z8|ac2qZKxL4~|2yAp4wFvoW%c^EDCYYPS0!&Qg>@*uD&c9E*U3cn-|=5bU{Yz!QU} zmWk}lRBQZx$b8h|CnB#GgK%&&EuN7bMNZ5%Tcq}%Fkmr&$C4Rqe|}}mc0c?-GZTJr zYEll}OBHllUeK%vI$Y3%KCh7bHD-U@?A=8?(q7brLV^cjJbxUntF*PG5yOFEoo16kTHs;oGN`XS8M6xLZ$KdPK^4(nFV8YOI_3H@s1jP{W9lZTZ!#&Jv{I%%_3E^~G-H;Rj+)dWpH5}|462mY z`gztks2?+_GV+!&wZBxScgiwmmD5R+YW3?B4rEXj^k#r(<(27lDKICLIyG@)sr3i2 zL{V?u({PGGr-!PX#gAJ`P}2lTrrFZyq=TU%#q8lvHENP;a9h=T&a4$yD4ij)g`e>Y zF@7i2czPw|bIah#DjEn^(uuIg%LR%H5-uFRy!gW68&4F`rEvLNexXq;MI3^PDW*Zf zkm(S9@3?$%H9-|NOBk0weq5WY(4ozrOm9V=%H_Q)AVG+Wjz&T~a8CFjTn9Z69fGTi zuQSsHc7K7k(x-Y5FL_k#XWMfq_?9U`JtpBwB3>pK-(wj z7_?)OjD$y?k~AJ&<9FfG=C6yN;>9m7yZEPCtQb$nu~t;LZPXi!`qQ5|U1LLi+v(tS z)0x^x4GzpfLorX{!QMW~O@I26XI0CQGmG>seO91YJLR%J{cW^2*7euf1%U!HP&2=& zU}#reo&UiOq_XjlZBhw(k9u$o>-cKNdKh~l;B-BKSvt#s#&FR4z^r3o5NCI?IFk1K=Cvu>+2 H8tnfM>Br}( diff --git a/package.json b/package.json index 7de4c07..4452e37 100644 --- a/package.json +++ b/package.json @@ -4,10 +4,11 @@ "type": "module", "scripts": { "tsc": "tsc", - "start": "bun run ./src/index.ts", + "start": "bun --watch run ./src/index.ts", "dev": "tsc && bun start" }, "devDependencies": { + "@types/bun": "^1.1.10", "@types/steamapi": "^2.2.2", "bun-types": "latest", "typescript": "^5.2.2" @@ -18,6 +19,7 @@ "dependencies": { "discord.js": "^14.13.0", "dotenv": "^16.3.1", + "elysia": "^1.1.17", "steamapi": "^2.4.2" } } \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 1edc9a1..742ff7a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,6 +4,7 @@ dotenv.config(); import ConfigProvider from './providers/ConfigProvider'; import DiscordProvider from './providers/DiscordProvider'; import SteamProvider from './providers/SteamProvider'; +import { Elysia, t } from 'elysia'; // 1 minute const REFRESH_TIME = 60 * 1000; @@ -24,15 +25,9 @@ interface ReturnData { let latestReturnData: ReturnData = {}; -function sendJsonResponse(data: any) { - let res = new Response(JSON.stringify(data)); - res.headers.set('Access-Control-Allow-Origin', '*'); - res.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); - return res; -} - async function main() { if (!ConfigProvider.isReady()) return; + const port = process.env.PORT || 3000; setInterval(async () => { let newData: ReturnData = {}; @@ -79,34 +74,36 @@ async function main() { } }, 500); - const server = Bun.serve({ - port: 3000, - async fetch(request: Request) { - let url = new URL(request.url); - let user = url.searchParams.get('user'); + const server = new Elysia() + .get('/', async ({ query, error }) => { + query: t.Object({ + user: t.Optional(t.String()) + }); - if (!user || user === null) { + let user = query.user; + + if (!user) { if (!ConfigProvider.getConfig().global.lookup_all) - return sendJsonResponse({ success: false, message: 'Lookup all is disabled' }); + return error('Forbidden', { success: false, message: 'Lookup all is disabled' }); - return sendJsonResponse({ + return { success: true, data: latestReturnData - }); + }; } user = user.toLowerCase(); - if (!latestReturnData[user]) return sendJsonResponse({ success: false, message: 'Unable to find user' }); + if (!latestReturnData[user]) return error('Not Found', { success: false, message: 'Unable to find user' }); const userData = latestReturnData[user]; - return sendJsonResponse({ + return { success: true, data: userData - }); - } - }); + }; + }) + .listen(port); - console.log(`Listening on localhost:${server.port}`); + console.log(`Listening on port ${port}`); } main();