skip java uuid request/validation if api sends rate limit response
All checks were successful
delpoy / build-and-deploy (push) Successful in 51s
All checks were successful
delpoy / build-and-deploy (push) Successful in 51s
This commit is contained in:
parent
5e07f4d545
commit
abffa440a1
@ -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()}`);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user