in util/upload/src/lib/minio.ts [62:104]
async uploadContent(
file: string,
fileAddr: string
): Promise<Result> {
let maxTries = 5;
let result = Result.ERROR;
let shouldContinue = true;
do {
const fileToUpload = Bun.file(file);
const data = await toBuffer(fileToUpload.stream());
let mimeType = fileToUpload.type;
if (mimeType.indexOf(';') > -1) {
mimeType = mimeType.substring(0, mimeType.indexOf(';'));
}
const metadata: Record<string, string> = {
'Content-Type': mimeType,
}
try {
await this.minioClient.putObject(this.bucket, fileAddr, data, fileToUpload.size, metadata);
if (this.programOptions["--verbose"])
console.log(`Upload ${fileAddr}: OK\n`);
result = Result.COMPLETED;
shouldContinue = false;
} catch (error) {
result = Result.ERROR;
if ((error as { code?: string }).code == "ConnectionClosed") {
if (this.programOptions["--verbose"])
console.log(`Upload ${fileAddr}: KO: retry ${maxTries}\n`);
maxTries--;
Bun.sleep(25*maxTries);
} else {
shouldContinue = false;
console.log(`Upload ${fileAddr}: KO: retry ${maxTries}\n`);
}
}
}
while (shouldContinue && maxTries > 0);
return result
}