56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
const express = require("express")
|
|
const { v4: uuidv4 } = require("uuid")
|
|
|
|
const requireAuth = require("../middleware/requireAuth")
|
|
const requireNotRestricted = require("../middleware/requireNotRestricted")
|
|
const { upload } = require("../middleware/upload.middleware")
|
|
const { uploadImage } = require("../services/uploadImage.service")
|
|
const { makeWebp } = require("../utils/processImage")
|
|
const { enqueueAuditFromRequest, buildAuditMeta } = require("../services/audit.service")
|
|
const { AUDIT_ACTIONS } = require("../services/auditActions")
|
|
|
|
const router = express.Router()
|
|
|
|
router.post(
|
|
"/image",
|
|
requireAuth,
|
|
requireNotRestricted({ checkSuspend: true }),
|
|
upload.single("file"),
|
|
async (req, res) => {
|
|
try {
|
|
if (!req.file) return res.status(400).json({ error: "Dosya zorunlu" })
|
|
if (!req.file.mimetype?.startsWith("image/")) {
|
|
return res.status(400).json({ error: "Sadece resim kabul edilir" })
|
|
}
|
|
|
|
const key = uuidv4()
|
|
const webpBuffer = await makeWebp(req.file.buffer, { quality: 40 })
|
|
const path = `images/dealDescription/${key}.webp`
|
|
|
|
const url = await uploadImage({
|
|
path,
|
|
fileBuffer: webpBuffer,
|
|
contentType: "image/webp",
|
|
})
|
|
|
|
enqueueAuditFromRequest(
|
|
req,
|
|
AUDIT_ACTIONS.MEDIA.UPLOAD,
|
|
buildAuditMeta({
|
|
entityType: "MEDIA",
|
|
entityId: path,
|
|
extra: { contentType: "image/webp" },
|
|
})
|
|
)
|
|
|
|
res.json({ url })
|
|
} catch (err) {
|
|
console.error(err)
|
|
res.status(500).json({ error: "Sunucu hatasi" })
|
|
}
|
|
}
|
|
)
|
|
|
|
module.exports = router
|
|
|