Merge pull request #272 from bknd-io/feat/media-add-body-max

feat: add media option to module to restrict body max size
This commit is contained in:
dswbx
2025-10-01 09:39:38 +02:00
committed by GitHub
4 changed files with 11 additions and 3 deletions

View File

@@ -49,6 +49,8 @@ export function registerMedia(
* @todo: add tests (bun tests won't work, need node native tests)
*/
export class StorageR2Adapter extends StorageAdapter {
public keyPrefix: string = "";
constructor(private readonly bucket: R2Bucket) {
super();
}
@@ -175,7 +177,7 @@ export class StorageR2Adapter extends StorageAdapter {
}
protected getKey(key: string) {
return key;
return `${this.keyPrefix}/${key}`.replace(/^\/\//, "/");
}
toJSON(secrets?: boolean) {

View File

@@ -22,6 +22,9 @@ declare module "bknd" {
// @todo: current workaround to make it all required
export class AppMedia extends Module<Required<TAppMediaConfig>> {
private _storage?: Storage;
options = {
body_max_size: null as number | null,
};
override async build() {
if (!this.config.enabled) {

View File

@@ -93,7 +93,10 @@ export class MediaController extends Controller {
},
);
const maxSize = this.getStorage().getConfig().body_max_size ?? Number.POSITIVE_INFINITY;
const maxSize =
this.media.options.body_max_size ??
this.getStorage().getConfig().body_max_size ??
Number.POSITIVE_INFINITY;
if (isDebug()) {
hono.post(

View File

@@ -48,7 +48,7 @@ export function buildMediaSchema() {
{
default: {},
},
);
).strict();
}
export const mediaConfigSchema = buildMediaSchema();