@appsemble/node-utils
Version:
NodeJS utilities used by Appsemble internally.
27 lines • 1.23 kB
JavaScript
import { assertKoaCondition, throwKoaError } from '../../../../../koa.js';
import { AssetUploadValidationError, validateUploadedFile, } from '../../../../../uploadValidation.js';
export function createCreateAppAssetController({ createAppAsset, getApp }) {
return async (ctx) => {
const { pathParams: { appId }, request: { body: { file: { filename, mime, path }, name, }, }, } = ctx;
const app = await getApp({ context: ctx, query: { attributes: ['id'], where: { id: appId } } });
assertKoaCondition(app != null, ctx, 404, 'App not found');
let validatedMime;
try {
validatedMime = await validateUploadedFile({ filename, mime, path });
}
catch (error) {
if (error instanceof AssetUploadValidationError) {
throwKoaError(ctx, 400, error.message);
}
throw error;
}
const asset = await createAppAsset({
app,
context: ctx,
payload: { filename, mime: validatedMime, name, path },
});
ctx.status = 201;
ctx.body = { id: asset.id, mime: asset.mime, filename, name };
};
}
//# sourceMappingURL=createCreateAppAssetController.js.map