diff --git a/packages/backend-core/src/objectStore/objectStore.ts b/packages/backend-core/src/objectStore/objectStore.ts index 0b2e413232..cf66074935 100644 --- a/packages/backend-core/src/objectStore/objectStore.ts +++ b/packages/backend-core/src/objectStore/objectStore.ts @@ -120,14 +120,14 @@ export async function createBucketIfNotExists( Bucket: bucketName, }) .promise() - return true + return false } catch (err: any) { const promises: any = STATE.bucketCreationPromises const doesntExist = err.statusCode === 404, noAccess = err.statusCode === 403 if (promises[bucketName]) { await promises[bucketName] - return true + return false } else if (doesntExist || noAccess) { if (doesntExist) { promises[bucketName] = client @@ -137,7 +137,7 @@ export async function createBucketIfNotExists( .promise() await promises[bucketName] delete promises[bucketName] - return false + return true } else { throw new Error("Access denied to object store bucket.") } @@ -162,9 +162,9 @@ export async function upload({ const extension = filename.split(".").pop() const fileBytes = path ? fs.createReadStream(path) : body const objectStore = ObjectStore(bucketName) - const bucketExisted = await createBucketIfNotExists(objectStore, bucketName) + const bucketCreated = await createBucketIfNotExists(objectStore, bucketName) - if (addTTL && !bucketExisted) { + if (addTTL && bucketCreated) { let ttlConfig = bucketTTLConfig(bucketName, 1) await objectStore.putBucketLifecycleConfiguration(ttlConfig).promise() } diff --git a/packages/server/src/integrations/utils.ts b/packages/server/src/integrations/utils.ts index 91c50c7cd5..0d97c376ea 100644 --- a/packages/server/src/integrations/utils.ts +++ b/packages/server/src/integrations/utils.ts @@ -16,6 +16,7 @@ import { helpers } from "@budibase/shared-core" import { context, objectStore } from "@budibase/backend-core" import { v4 } from "uuid" import { parseStringPromise as xmlParser } from "xml2js" +import { formatBytes } from "../utilities" const DOUBLE_SEPARATOR = `${SEPARATOR}${SEPARATOR}` const ROW_ID_REGEX = /^\[.*]$/g @@ -461,7 +462,11 @@ export async function handleXml(response: any) { return { data, rawXml } } -export async function handleFileResponse(response: any, filename: string) { +export async function handleFileResponse( + response: any, + filename: string, + startTime: number +) { let presignedUrl const responseBuffer = await response.arrayBuffer() const fileExtension = filename.includes(".") @@ -481,12 +486,17 @@ export async function handleFileResponse(response: any, filename: string) { presignedUrl = await objectStore.getPresignedUrl(bucket, key, 600) return { - file: { + data: { size: responseBuffer.byteLength, name: processedFileName, url: presignedUrl, extension: fileExtension, key: key, }, + info: { + code: response.status, + size: formatBytes(responseBuffer.byteLength), + time: `${Math.round(performance.now() - startTime)}ms`, + }, } }