Compare commits

..

2 Commits

Author SHA1 Message Date
copilot-swe-agent[bot]
f950b6f60b Fix empty .txt file uploads by preventing stream consumption
Co-authored-by: danielalves96 <62755605+danielalves96@users.noreply.github.com>
2025-10-21 14:29:00 +00:00
copilot-swe-agent[bot]
c19dc6d95e Initial plan 2025-10-21 14:18:19 +00:00
6 changed files with 9 additions and 23 deletions

View File

@@ -1,6 +1,6 @@
{ {
"name": "palmr-docs", "name": "palmr-docs",
"version": "3.2.5-beta", "version": "3.2.4-beta",
"description": "Docs for Palmr", "description": "Docs for Palmr",
"private": true, "private": true,
"author": "Daniel Luiz Alves <daniel@kyantech.com.br>", "author": "Daniel Luiz Alves <daniel@kyantech.com.br>",

View File

@@ -1,6 +1,6 @@
{ {
"name": "palmr-api", "name": "palmr-api",
"version": "3.2.5-beta", "version": "3.2.4-beta",
"description": "API for Palmr", "description": "API for Palmr",
"private": true, "private": true,
"author": "Daniel Luiz Alves <daniel@kyantech.com.br>", "author": "Daniel Luiz Alves <daniel@kyantech.com.br>",

View File

@@ -6,12 +6,12 @@ import { FilesystemController } from "./controller";
export async function filesystemRoutes(app: FastifyInstance) { export async function filesystemRoutes(app: FastifyInstance) {
const filesystemController = new FilesystemController(); const filesystemController = new FilesystemController();
app.addContentTypeParser("*", async (request: FastifyRequest, payload: any) => { app.addContentTypeParser("*", (request: FastifyRequest, payload: any, done: any) => {
return payload; done(null, null);
}); });
app.addContentTypeParser("application/json", async (request: FastifyRequest, payload: any) => { app.addContentTypeParser("application/json", (request: FastifyRequest, payload: any, done: any) => {
return payload; done(null, null);
}); });
app.put( app.put(

View File

@@ -80,21 +80,7 @@ export class S3StorageProvider implements StorageProvider {
Key: objectName, Key: objectName,
}); });
// Disable automatic checksum calculation for large file uploads return await getSignedUrl(s3Client, command, { expiresIn: expires });
// This prevents the SDK from adding x-amz-checksum-* headers that may cause
// 400 Bad Request errors with S3-compatible providers like Wasabi for files > 10GB
// The unhoistableHeaders option prevents specific headers from being included in the presigned URL
return await getSignedUrl(s3Client, command, {
expiresIn: expires,
unhoistableHeaders: new Set([
"x-amz-checksum-crc32",
"x-amz-checksum-crc32c",
"x-amz-checksum-sha1",
"x-amz-checksum-sha256",
"x-amz-checksum-crc64nvme",
"x-amz-sdk-checksum-algorithm",
]),
});
} }
async getPresignedGetUrl(objectName: string, expires: number, fileName?: string): Promise<string> { async getPresignedGetUrl(objectName: string, expires: number, fileName?: string): Promise<string> {

View File

@@ -1,6 +1,6 @@
{ {
"name": "palmr-web", "name": "palmr-web",
"version": "3.2.5-beta", "version": "3.2.4-beta",
"description": "Frontend for Palmr", "description": "Frontend for Palmr",
"private": true, "private": true,
"author": "Daniel Luiz Alves <daniel@kyantech.com.br>", "author": "Daniel Luiz Alves <daniel@kyantech.com.br>",

View File

@@ -1,6 +1,6 @@
{ {
"name": "palmr-monorepo", "name": "palmr-monorepo",
"version": "3.2.5-beta", "version": "3.2.4-beta",
"description": "Palmr monorepo with Husky configuration", "description": "Palmr monorepo with Husky configuration",
"private": true, "private": true,
"packageManager": "pnpm@10.6.0", "packageManager": "pnpm@10.6.0",