From ba89e585a44afcdf1edaba0e2b2f036afd14e093 Mon Sep 17 00:00:00 2001 From: Nevo David Date: Sun, 19 Jan 2025 01:24:36 +0700 Subject: [PATCH] feat: middleware --- .../src/upload/cloudflare.storage.ts | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/libraries/nestjs-libraries/src/upload/cloudflare.storage.ts b/libraries/nestjs-libraries/src/upload/cloudflare.storage.ts index 6bf12ef1..2717e372 100644 --- a/libraries/nestjs-libraries/src/upload/cloudflare.storage.ts +++ b/libraries/nestjs-libraries/src/upload/cloudflare.storage.ts @@ -3,7 +3,7 @@ import 'multer'; import { makeId } from '@gitroom/nestjs-libraries/services/make.is'; import mime from 'mime-types'; // @ts-ignore -import {getExtension} from 'mime'; +import { getExtension } from 'mime'; import { IUploadProvider } from './upload.interface'; import axios from 'axios'; @@ -26,11 +26,41 @@ class CloudflareStorage implements IUploadProvider { secretAccessKey: secretKey, }, }); + + this._client.middlewareStack.add( + (next) => + async (args): Promise => { + const request = args.request as RequestInit; + + // Remove checksum headers + const headers = request.headers as Record; + delete headers['x-amz-checksum-crc32']; + delete headers['x-amz-checksum-crc32c']; + delete headers['x-amz-checksum-sha1']; + delete headers['x-amz-checksum-sha256']; + request.headers = headers; + + Object.entries(request.headers).forEach( + // @ts-ignore + ([key, value]: [string, string]): void => { + if (!request.headers) { + request.headers = {}; + } + (request.headers as Record)[key] = value; + } + ); + + return next(args); + }, + { step: 'build', name: 'customHeaders' } + ); } async uploadSimple(path: string) { const loadImage = await axios.get(path, { responseType: 'arraybuffer' }); - const contentType = loadImage?.headers?.['content-type'] || loadImage?.headers?.['Content-Type']; + const contentType = + loadImage?.headers?.['content-type'] || + loadImage?.headers?.['Content-Type']; const extension = getExtension(contentType)!; const id = makeId(10);