async uploadContent()

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
    }