feat(medusa): Delete and download url endpoints (#1705)
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
import { IsString } from "class-validator"
|
||||
import { validator } from "../../../../utils/validator"
|
||||
|
||||
/**
|
||||
* [delete] /uploads
|
||||
* operationId: "AdminDeleteUpload"
|
||||
@@ -11,14 +14,20 @@
|
||||
* description: OK
|
||||
*/
|
||||
export default async (req, res) => {
|
||||
try {
|
||||
const fileService = req.scope.resolve("fileService")
|
||||
const validated = await validator(AdminDeleteUploadReq, req.body, {
|
||||
forbidUnknownValues: false,
|
||||
})
|
||||
|
||||
await fileService.delete(req.body.file)
|
||||
const fileService = req.scope.resolve("fileService")
|
||||
|
||||
res.status(200).send({ id: "", object: "file", deleted: true })
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
throw err
|
||||
}
|
||||
await fileService.delete(validated)
|
||||
|
||||
res
|
||||
.status(200)
|
||||
.send({ id: validated.file_key, object: "file", deleted: true })
|
||||
}
|
||||
|
||||
class AdminDeleteUploadReq {
|
||||
@IsString()
|
||||
file_key: string
|
||||
}
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
import { IsString } from "class-validator"
|
||||
import { AbstractFileService } from "../../../../interfaces"
|
||||
import { validator } from "../../../../utils/validator"
|
||||
|
||||
/**
|
||||
* [get] /uploads
|
||||
* operationId: "GetUploadsFileDownloadUrl"
|
||||
* summary: "Gets a presigned download url for a file"
|
||||
* description: "Gets a presigned download url for a file"
|
||||
* x-authenticated: true
|
||||
* requestBody:
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* required:
|
||||
* - file_key
|
||||
* properties:
|
||||
* file_key:
|
||||
* description: "key of the file to obtain the download link for"
|
||||
* type: string
|
||||
* - (path) fileKey=* {string} key of the file to obtain the download link for.
|
||||
* tags:
|
||||
* - Uploads
|
||||
* responses:
|
||||
* 200:
|
||||
* description: OK
|
||||
*/
|
||||
export default async (req, res) => {
|
||||
const validated = await validator(AdminGetUploadsFileDownloadUrlReq, req.body)
|
||||
|
||||
const fileService: AbstractFileService<any> = req.scope.resolve("fileService")
|
||||
|
||||
const url = await fileService.getPresignedDownloadUrl({
|
||||
fileKey: validated.file_key,
|
||||
})
|
||||
|
||||
res.status(200).send({ download_url: url })
|
||||
}
|
||||
|
||||
class AdminGetUploadsFileDownloadUrlReq {
|
||||
@IsString()
|
||||
file_key: string
|
||||
}
|
||||
@@ -16,8 +16,12 @@ export default (app) => {
|
||||
middlewares.wrap(require("./create-upload").default)
|
||||
)
|
||||
|
||||
// removed on purpose
|
||||
// route.post("/delete", middlewares.wrap(require("./delete-upload").default))
|
||||
route.delete("/", middlewares.wrap(require("./delete-upload").default))
|
||||
|
||||
route.get(
|
||||
"/download-url",
|
||||
middlewares.wrap(require("./get-download-url").default)
|
||||
)
|
||||
|
||||
return app
|
||||
}
|
||||
@@ -29,4 +33,5 @@ export type AdminUploadRes = {
|
||||
export type AdminDeleteUploadRes = DeleteResponse
|
||||
|
||||
export * from "./create-upload"
|
||||
// export * from "./delete-upload"
|
||||
export * from "./delete-upload"
|
||||
export * from "./get-download-url"
|
||||
|
||||
Reference in New Issue
Block a user