feat: implement direct upload (#12328)

* feat: implement direct upload

* feat: add direct-upload endpoint

* refactor: implement feedback

* refactor: have a dedicated endpoint for direct uploads

* refactor: convert responses to snakecase

* refactor: rename method to createImport

* test: add tests for the presigned-urls endpoint
This commit is contained in:
Harminder Virk authored and GitHub committed 2025-05-04 12:58:10 +02:00
1 parent ed55d17a36
commit 84f58f9058
22 files changed
+537 -129

No files matched your search

@@ -217,15 +217,17 @@ export class S3FileService extends AbstractFileProviderService {
}
}
async getAsStream(file: FileTypes.ProviderGetFileDTO): Promise<Readable> {
if (!file?.filename) {
async getDownloadStream(
file: FileTypes.ProviderGetFileDTO
): Promise<Readable> {
if (!file?.fileKey) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
`No filename provided`
`No fileKey provided`
)
}
const fileKey = `${this.config_.prefix}${file.filename}`
const fileKey = `${this.config_.prefix}${file.fileKey}`
const response = await this.client_.send(
new GetObjectCommand({
Key: fileKey,
@@ -237,14 +239,14 @@ export class S3FileService extends AbstractFileProviderService {
}
async getAsBuffer(file: FileTypes.ProviderGetFileDTO): Promise<Buffer> {
if (!file?.filename) {
if (!file?.fileKey) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
`No filename provided`
`No fileKey provided`
)
}
const fileKey = `${this.config_.prefix}${file.filename}`
const fileKey = `${this.config_.prefix}${file.fileKey}`
const response = await this.client_.send(
new GetObjectCommand({
Key: fileKey,