import { fail } from '@sveltejs/kit'; import { BUCKET, client, CONFIGFILENAME, TOKENFILENAME } from '$lib/minio'; import { checkIfExactDirectoryExists, getContentofTextObject } from './s3ClientService'; /** * Get Vorgang and corresponend list of tatorte * @param caseId * @returns */ export const getVorgangByCaseId = async (caseId: string) => { const prefix = `${caseId}/`; const stream = client.listObjectsV2(BUCKET, prefix, false, ''); const list = []; for await (const chunk of stream) { const splittedNameParts = chunk.name.split('/'); const prefix = splittedNameParts[0]; const name = splittedNameParts[1]; if (name === CONFIGFILENAME || name === TOKENFILENAME) continue; list.push({ ...chunk, name: name, prefix: prefix, show_button: true }); } return list; }; export const getListOfVorgänge = async () => { const stream = client.listObjectsV2(BUCKET, '', false, ''); const list = []; for await (const chunk of stream) { const objPath = `${chunk.prefix}${TOKENFILENAME}`; const token = await getContentofTextObject(BUCKET, objPath); const cleanedChunkPrefix = chunk.prefix.replace(/\/$/, ''); list.push({ name: cleanedChunkPrefix, token: token }); } return list; }; /** * Checks if Vorgang exists * @param request * @returns fail or true */ export const checkIfVorgangExists = async (caseId: string) => { if (!caseId) { return fail(400, { success: false, caseId, error: { message: 'Die Vorgangsnummer darf nicht leer sein.' } }); } if (typeof caseId === 'string' && !(await checkIfExactDirectoryExists(caseId))) { return fail(400, { success: false, caseId, error: { message: 'Die Vorgangsnummer existiert in dieser Anwendung nicht.' } }); } return true; }; export const hasValidToken = async (caseId: string, caseToken: string) => { const objPath = `${caseId}/${TOKENFILENAME}`; try { if (!caseToken) { return fail(400, { success: false, caseId, error: { message: 'Bitte Zugangscode eingeben!' } }); } const token = await getContentofTextObject(BUCKET, objPath); if (!token || token !== caseToken) { return fail(400, { success: false, caseId, error: { message: 'Der Token ist ungültig.' } }); } return true; } catch (error) { if (error.name == 'S3Error') { console.log(error); return false; } } };