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, Bucket: bucketName,
}) })
.promise() .promise()
return true return false
} catch (err: any) { } catch (err: any) {
const promises: any = STATE.bucketCreationPromises const promises: any = STATE.bucketCreationPromises
const doesntExist = err.statusCode === 404, const doesntExist = err.statusCode === 404,
noAccess = err.statusCode === 403 noAccess = err.statusCode === 403
if (promises[bucketName]) { if (promises[bucketName]) {
await promises[bucketName] await promises[bucketName]
return true return false
} else if (doesntExist || noAccess) { } else if (doesntExist || noAccess) {
if (doesntExist) { if (doesntExist) {
promises[bucketName] = client promises[bucketName] = client
@ -137,7 +137,7 @@ export async function createBucketIfNotExists(
.promise() .promise()
await promises[bucketName] await promises[bucketName]
delete promises[bucketName] delete promises[bucketName]
return false return true
} else { } else {
throw new Error("Access denied to object store bucket.") throw new Error("Access denied to object store bucket.")
} }
@ -162,9 +162,9 @@ export async function upload({
const extension = filename.split(".").pop() const extension = filename.split(".").pop()
const fileBytes = path ? fs.createReadStream(path) : body const fileBytes = path ? fs.createReadStream(path) : body
const objectStore = ObjectStore(bucketName) 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) let ttlConfig = bucketTTLConfig(bucketName, 1)
await objectStore.putBucketLifecycleConfiguration(ttlConfig).promise() 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 { context, objectStore } from "@budibase/backend-core"
import { v4 } from "uuid" import { v4 } from "uuid"
import { parseStringPromise as xmlParser } from "xml2js" import { parseStringPromise as xmlParser } from "xml2js"
import { formatBytes } from "../utilities"
const DOUBLE_SEPARATOR = `${SEPARATOR}${SEPARATOR}` const DOUBLE_SEPARATOR = `${SEPARATOR}${SEPARATOR}`
const ROW_ID_REGEX = /^\[.*]$/g const ROW_ID_REGEX = /^\[.*]$/g
@ -461,7 +462,11 @@ export async function handleXml(response: any) {
return { data, rawXml } return { data, rawXml }
} }
export async function handleFileResponse(response: any, filename: string) { export async function handleFileResponse(
response: any,
filename: string,
startTime: number
) {
let presignedUrl let presignedUrl
const responseBuffer = await response.arrayBuffer() const responseBuffer = await response.arrayBuffer()
const fileExtension = filename.includes(".") const fileExtension = filename.includes(".")
@ -481,12 +486,17 @@ export async function handleFileResponse(response: any, filename: string) {
presignedUrl = await objectStore.getPresignedUrl(bucket, key, 600) presignedUrl = await objectStore.getPresignedUrl(bucket, key, 600)
return { return {
file: { data: {
size: responseBuffer.byteLength, size: responseBuffer.byteLength,
name: processedFileName, name: processedFileName,
url: presignedUrl, url: presignedUrl,
extension: fileExtension, extension: fileExtension,
key: key, key: key,
}, },
info: {
code: response.status,
size: formatBytes(responseBuffer.byteLength),
time: `${Math.round(performance.now() - startTime)}ms`,
},
} }
} }