58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
import { ActionError, defineAction } from 'astro:actions';
|
|
import { Session } from '@util/session.ts';
|
|
import { Permissions } from '@util/permissions.ts';
|
|
import { z } from 'astro:schema';
|
|
import { getBedrockUuid, getJavaUuid } from '@util/minecraft.ts';
|
|
|
|
export const tools = {
|
|
uuidFromUsername: defineAction({
|
|
input: z.object({
|
|
edition: z.enum(['java', 'bedrock']),
|
|
username: z.string()
|
|
}),
|
|
handler: async (input, context) => {
|
|
Session.actionSessionFromCookies(context.cookies, Permissions.Tools);
|
|
|
|
let uuid = null;
|
|
switch (input.edition) {
|
|
case 'java':
|
|
try {
|
|
uuid = await getJavaUuid(input.username);
|
|
} catch (_) {
|
|
throw new ActionError({
|
|
code: 'NOT_FOUND',
|
|
message: `Der Username ${input.username} existiert nicht`
|
|
});
|
|
}
|
|
if (uuid == null) {
|
|
throw new ActionError({
|
|
code: 'BAD_REQUEST',
|
|
message: `Während der Anfrage zur Mojang API ist ein Fehler aufgetreten`
|
|
});
|
|
}
|
|
break;
|
|
case 'bedrock':
|
|
try {
|
|
uuid = await getBedrockUuid(input.username);
|
|
} catch (_) {
|
|
throw new ActionError({
|
|
code: 'NOT_FOUND',
|
|
message: `Der Username ${input.username} existiert nicht`
|
|
});
|
|
}
|
|
if (uuid == null) {
|
|
throw new ActionError({
|
|
code: 'BAD_REQUEST',
|
|
message: `Während der Anfrage zum Username Resolver ist ein Fehler aufgetreten`
|
|
});
|
|
}
|
|
break;
|
|
}
|
|
|
|
return {
|
|
uuid: uuid
|
|
};
|
|
}
|
|
})
|
|
};
|