update UI and QOL
This commit is contained in:
@@ -4,7 +4,7 @@ const path = require('path');
|
||||
const crypto = require('crypto');
|
||||
const multer = require('multer');
|
||||
const { listAds, getAd, updateAd, updateAdFile, updateAdThumbnail, deleteAd } = require('../db');
|
||||
const { captureScreenshot } = require('../utils/screenshot');
|
||||
const { captureScreenshot, captureScreenshotCandidates } = require('../utils/screenshot');
|
||||
|
||||
const UPLOADS_DIR = process.env.UPLOADS_DIR || path.join(__dirname, '..', '..', 'uploads');
|
||||
|
||||
@@ -91,6 +91,22 @@ router.post('/:id/screenshot', async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
router.post('/:id/screenshot-candidates', async (req, res) => {
|
||||
const ad = getAd(req.params.id);
|
||||
if (!ad) return res.status(404).json({ error: 'Not found' });
|
||||
|
||||
try {
|
||||
const port = process.env.PORT || 3000;
|
||||
const url = `http://127.0.0.1:${port}/uploads/${ad.filename}`;
|
||||
const buffers = await captureScreenshotCandidates(url);
|
||||
const candidates = buffers.map(buf => 'data:image/png;base64,' + buf.toString('base64'));
|
||||
res.json({ candidates });
|
||||
} catch (err) {
|
||||
console.error('Screenshot candidates failed:', err.message);
|
||||
res.status(500).json({ error: 'Screenshot capture failed' });
|
||||
}
|
||||
});
|
||||
|
||||
router.post('/:id/file', uploadFile.single('file'), (req, res) => {
|
||||
const ad = getAd(req.params.id);
|
||||
if (!ad) return res.status(404).json({ error: 'Not found' });
|
||||
|
||||
24
server/routes/developers.js
Normal file
24
server/routes/developers.js
Normal file
@@ -0,0 +1,24 @@
|
||||
const express = require('express');
|
||||
const { listDevelopers, addDeveloper, removeDeveloper } = require('../db');
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.get('/', (_req, res) => {
|
||||
res.json(listDevelopers());
|
||||
});
|
||||
|
||||
router.post('/', (req, res) => {
|
||||
const { name } = req.body;
|
||||
if (!name?.trim()) return res.status(400).json({ error: 'name is required' });
|
||||
const dev = addDeveloper(name.trim());
|
||||
if (!dev) return res.status(409).json({ error: 'Developer already exists' });
|
||||
res.status(201).json(dev);
|
||||
});
|
||||
|
||||
router.delete('/:id', (req, res) => {
|
||||
const dev = removeDeveloper(req.params.id);
|
||||
if (!dev) return res.status(404).json({ error: 'Not found' });
|
||||
res.status(204).end();
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user