aboutsummaryrefslogtreecommitdiff
path: root/build/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'build/index.js')
-rw-r--r--build/index.js169
1 files changed, 0 insertions, 169 deletions
diff --git a/build/index.js b/build/index.js
deleted file mode 100644
index 050e22a..0000000
--- a/build/index.js
+++ /dev/null
@@ -1,169 +0,0 @@
-import { createSession, fetchAccountFromDiscord, fetchAllLeaderboardsCategorized, fetchLeaderboard, fetchMemberLeaderboardSpots, fetchSession, finishedCachingRawLeaderboards, leaderboardUpdateMemberQueue, leaderboardUpdateProfileQueue, updateAccount } from './database.js';
-import { fetchMemberProfile, fetchUser } from './hypixel.js';
-import rateLimit from 'express-rate-limit';
-import * as constants from './constants.js';
-import * as discord from './discord.js';
-import express from 'express';
-import { basicPlayerCache, basicProfilesCache, playerCache, profileCache, profileNameCache, profilesCache, usernameCache } from './hypixelCached.js';
-const app = express();
-export const debug = false;
-const mainSiteUrl = 'https://skyblock.matdoes.dev';
-// 200 requests over 5 minutes
-const limiter = rateLimit({
- windowMs: 60 * 1000 * 5,
- max: 200,
- skip: (req) => {
- return req.headers.key === process.env.key;
- },
- keyGenerator: (req) => {
- return (req.headers['cf-connecting-ip'] ?? req.ip).toString();
- }
-});
-app.use(limiter);
-app.use(express.json());
-app.use((req, res, next) => {
- res.setHeader('Access-Control-Allow-Origin', '*');
- next();
-});
-const startTime = Date.now();
-app.get('/', async (req, res) => {
- const currentTime = Date.now();
- res.json({
- ok: true,
- uptimeHours: (currentTime - startTime) / 1000 / 60 / 60,
- finishedCachingRawLeaderboards,
- leaderboardUpdateMemberQueueSize: leaderboardUpdateMemberQueue.size,
- leaderboardUpdateProfileQueueSize: leaderboardUpdateProfileQueue.size,
- usernameCacheSize: usernameCache.keys().length,
- basicProfilesCacheSize: basicProfilesCache.keys().length,
- playerCacheSize: playerCache.keys().length,
- basicPlayerCacheSize: basicPlayerCache.keys().length,
- profileCacheSize: profileCache.keys().length,
- profilesCacheSize: profilesCache.keys().length,
- profileNameCacheSize: profileNameCache.keys().length,
- // key: getKeyUsage()
- });
-});
-app.get('/player/:user', async (req, res) => {
- try {
- const user = await fetchUser({ user: req.params.user }, [req.query.basic === 'true' ? undefined : 'profiles', 'player'], req.query.customization === 'true');
- if (user)
- res.json(user);
- else
- res.status(404).json({ error: true });
- }
- catch (err) {
- console.error(err);
- res.json({ error: true });
- }
-});
-app.get('/discord/:id', async (req, res) => {
- try {
- res.json(await fetchAccountFromDiscord(req.params.id));
- }
- catch (err) {
- console.error(err);
- res.json({ ok: false });
- }
-});
-app.get('/player/:user/:profile', async (req, res) => {
- try {
- const profile = await fetchMemberProfile(req.params.user, req.params.profile, req.query.customization === 'true');
- if (profile)
- res.json(profile);
- else
- res.status(404).json({ error: true });
- }
- catch (err) {
- console.error(err);
- res.json({ error: true });
- }
-});
-app.get('/player/:user/:profile/leaderboards', async (req, res) => {
- try {
- res.json(await fetchMemberLeaderboardSpots(req.params.user, req.params.profile));
- }
- catch (err) {
- console.error(err);
- res.json({ ok: false });
- }
-});
-app.get('/leaderboard/:name', async (req, res) => {
- try {
- res.json(await fetchLeaderboard(req.params.name));
- }
- catch (err) {
- console.error(err);
- res.json({ 'error': err.toString() });
- }
-});
-app.get('/leaderboards', async (req, res) => {
- try {
- res.json(await fetchAllLeaderboardsCategorized());
- }
- catch (err) {
- console.error(err);
- res.json({ ok: false });
- }
-});
-app.get('/constants', async (req, res) => {
- try {
- res.json(await constants.fetchConstantValues());
- }
- catch (err) {
- console.error(err);
- res.json({ ok: false });
- }
-});
-app.post('/accounts/createsession', async (req, res) => {
- try {
- const { code } = req.body;
- const codeExchange = await discord.exchangeCode(`${mainSiteUrl}/loggedin`, code);
- if (!codeExchange) {
- res.json({ ok: false, error: 'discord_client_secret isn\'t in env' });
- return;
- }
- const { access_token: accessToken, refresh_token: refreshToken } = codeExchange;
- if (!accessToken)
- // access token is invalid :(
- return res.json({ ok: false });
- const userData = await discord.getUser(accessToken);
- const sessionId = await createSession(refreshToken, userData);
- res.json({ ok: true, session_id: sessionId });
- }
- catch (err) {
- res.json({ ok: false });
- }
-});
-app.post('/accounts/session', async (req, res) => {
- try {
- const { uuid } = req.body;
- const session = await fetchSession(uuid);
- if (!session)
- return res.json({ ok: false });
- const account = await fetchAccountFromDiscord(session.discord_user.id);
- res.json({ session, account });
- }
- catch (err) {
- console.error(err);
- res.json({ ok: false });
- }
-});
-app.post('/accounts/update', async (req, res) => {
- // it checks against the key, so it's kind of secure
- if (req.headers.key !== process.env.key)
- return console.log('bad key!');
- try {
- await updateAccount(req.body.discordId, req.body);
- res.json({ ok: true });
- }
- catch (err) {
- console.error(err);
- res.json({ ok: false });
- }
-});
-process.on('uncaughtException', err => console.error(err));
-process.on('unhandledRejection', (err, promise) => console.error(promise, err));
-// only run the server if it's not doing tests
-if (!globalThis.isTest)
- app.listen(8080, () => console.log('App started :)'));