adding back needed response for frontend

This commit is contained in:
Peter Clement 2024-03-14 19:35:02 +00:00
parent 4d0ca2880b
commit bcd3c0a55c
2 changed files with 17 additions and 7 deletions

View File

@ -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()
}

View File

@ -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`,
},
}
}