skip uuid java uuid request/validation if api sends rate limit response
Some checks failed
delpoy / build-and-deploy (push) Has been cancelled

This commit is contained in:
bytedream 2024-12-01 15:46:41 +01:00
parent 5e07f4d545
commit 9f582523ea
3 changed files with 19 additions and 2 deletions

View File

@ -9,11 +9,16 @@ export class UserNotFoundError extends Error {
}
}
export class RateLimitError extends Error {}
export class ApiError extends Error {}
export async function getJavaUuid(username: string): Promise<string> {
const response = await fetch(`https://api.mojang.com/users/profiles/minecraft/${username}`);
if (!response.ok) {
if (response.status == 429) {
throw new RateLimitError();
}
throw response.status < 500
? new UserNotFoundError(username)
: new ApiError(`mojang server error (${response.status}): ${await response.text()}`);

View File

@ -3,7 +3,7 @@ import { Permissions } from '$lib/permissions';
import { error, type RequestHandler } from '@sveltejs/kit';
import { User } from '$lib/server/database';
import { type Attributes, Op } from 'sequelize';
import { ApiError, getJavaUuid, getNoAuthUuid, UserNotFoundError } from '$lib/server/minecraft';
import { ApiError, getJavaUuid, getNoAuthUuid, RateLimitError, UserNotFoundError } from '$lib/server/minecraft';
import { UserAddSchema, UserDeleteSchema, UserEditSchema, UserListSchema } from './schema';
export const POST = (async ({ request, cookies }) => {
@ -117,6 +117,9 @@ export const PUT = (async ({ request, cookies }) => {
} else if (e instanceof ApiError) {
console.error((e as Error).message);
uuid = null;
} else if (e instanceof RateLimitError) {
console.error(`uuid request rate limited for user '${data.username}'`);
uuid = null;
} else {
console.error((e as Error).message);
throw error(500);

View File

@ -1,4 +1,10 @@
import { ApiError, getJavaUuid, getNoAuthUuid, UserNotFoundError } from '$lib/server/minecraft';
import {
ApiError,
getJavaUuid,
getNoAuthUuid,
RateLimitError,
UserNotFoundError
} from '$lib/server/minecraft';
import { error, type RequestHandler } from '@sveltejs/kit';
import { Settings, User } from '$lib/server/database';
import { RegisterSchema } from './schema';
@ -44,6 +50,9 @@ export const POST = (async ({ request }) => {
} else if (e instanceof ApiError) {
console.error((e as Error).message);
uuid = null;
} else if (e instanceof RateLimitError) {
console.error(`uuid request rate limited for user '${data.username}'`);
uuid = null;
} else {
console.error((e as Error).message);
throw error(500);