🚩 add file assets getter
create helper and boiler controller for get assets from object storage
This commit is contained in:
11
src/modules/assets/controllers/presignedAssets.controller.ts
Normal file
11
src/modules/assets/controllers/presignedAssets.controller.ts
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import { Context } from "elysia";
|
||||||
|
import { mainErrorHandler } from "../../../helpers/error/handler";
|
||||||
|
import { getPresignedFileUrl } from "../../../utils/storages/MinIO/operations/getPresignedFileUrl";
|
||||||
|
|
||||||
|
export const presignedAssetsController = async (ctx: Context) => {
|
||||||
|
try {
|
||||||
|
return await getPresignedFileUrl(ctx.params["*"]);
|
||||||
|
} catch (error) {
|
||||||
|
return mainErrorHandler(ctx.set, error);
|
||||||
|
}
|
||||||
|
};
|
||||||
11
src/modules/assets/controllers/streamAssets.controller.ts
Normal file
11
src/modules/assets/controllers/streamAssets.controller.ts
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import { Context } from "elysia";
|
||||||
|
import { getStreamFile } from "../../../utils/storages/MinIO/operations/getStreamFile";
|
||||||
|
import { mainErrorHandler } from "../../../helpers/error/handler";
|
||||||
|
|
||||||
|
export const streamAssetsController = async (ctx: Context) => {
|
||||||
|
try {
|
||||||
|
return await getStreamFile(ctx.params["*"]);
|
||||||
|
} catch (error) {
|
||||||
|
return mainErrorHandler(ctx.set, error);
|
||||||
|
}
|
||||||
|
};
|
||||||
7
src/modules/assets/index.ts
Normal file
7
src/modules/assets/index.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import Elysia from "elysia";
|
||||||
|
import { streamAssetsController } from "./controllers/streamAssets.controller";
|
||||||
|
import { presignedAssetsController } from "./controllers/presignedAssets.controller";
|
||||||
|
|
||||||
|
export const assetsModule = new Elysia({ prefix: "/assets" })
|
||||||
|
.get("/stream/*", streamAssetsController)
|
||||||
|
.get("/presigned/*", presignedAssetsController);
|
||||||
15
src/utils/storages/MinIO/operations/getPresignedFileUrl.ts
Normal file
15
src/utils/storages/MinIO/operations/getPresignedFileUrl.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import { minioClient } from "../client";
|
||||||
|
import { ensureBucketExists } from "../validations/ensureBucketExists";
|
||||||
|
|
||||||
|
export const getPresignedFileUrl = async (
|
||||||
|
filename: string,
|
||||||
|
expiresInSeconds: number = 3200
|
||||||
|
) => {
|
||||||
|
await ensureBucketExists();
|
||||||
|
|
||||||
|
return await minioClient.presignedGetObject(
|
||||||
|
process.env.MINIO_BUCKET!,
|
||||||
|
filename,
|
||||||
|
expiresInSeconds
|
||||||
|
);
|
||||||
|
};
|
||||||
8
src/utils/storages/MinIO/operations/getStreamFile.ts
Normal file
8
src/utils/storages/MinIO/operations/getStreamFile.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import { minioBucketName, minioClient } from "../client";
|
||||||
|
import { ensureBucketExists } from "../validations/ensureBucketExists";
|
||||||
|
|
||||||
|
export const getStreamFile = async (filename: string) => {
|
||||||
|
await ensureBucketExists();
|
||||||
|
|
||||||
|
return await minioClient.getObject(process.env.MINIO_BUCKET!, filename);
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user