37 lines
2.0 KiB
TypeScript
37 lines
2.0 KiB
TypeScript
import { Router } from 'express';
|
|
import { AssetController } from '../controllers/asset.controller';
|
|
import { authenticate, requireRole } from '../middleware/auth.middleware';
|
|
import { upload } from '../middleware/upload.middleware';
|
|
|
|
const router = Router();
|
|
const assetController = new AssetController();
|
|
|
|
router.use(authenticate);
|
|
|
|
router.post('/upload', requireRole('ADMIN'), upload.fields([{ name: 'file', maxCount: 1 }, { name: 'thumbnail', maxCount: 1 }]), assetController.uploadAsset);
|
|
router.post('/upload-thumbnail', requireRole('ADMIN'), upload.single('thumbnail'), assetController.uploadThumbnail);
|
|
router.get('/scrape-case-study', requireRole('ADMIN'), assetController.scrapeCaseStudy);
|
|
router.get('/', assetController.listAssets);
|
|
router.patch('/bulk-share', requireRole('ADMIN'), assetController.bulkShareAssets);
|
|
|
|
// Asset groups endpoints
|
|
router.get('/groups/list', assetController.listAssetGroups);
|
|
router.post('/groups/create', requireRole('ADMIN'), assetController.createAssetGroup);
|
|
router.delete('/groups/:id', requireRole('ADMIN'), assetController.deleteAssetGroup);
|
|
router.patch('/groups/:id/add-assets', requireRole('ADMIN'), assetController.addAssetsToGroup);
|
|
router.patch('/groups/:id/remove-assets', requireRole('ADMIN'), assetController.removeAssetsFromGroup);
|
|
|
|
router.get('/:id', assetController.getAsset);
|
|
router.patch('/:id', requireRole('ADMIN'), assetController.updateAsset);
|
|
router.post('/:id/share', requireRole('ADMIN'), assetController.shareAsset);
|
|
router.post('/:id/unshare', requireRole('ADMIN'), assetController.unshareAsset);
|
|
router.post('/:id/download', assetController.incrementDownload);
|
|
router.delete('/:id', requireRole('ADMIN'), assetController.deleteAsset);
|
|
|
|
// Download permission request management
|
|
router.post('/:id/request-download', assetController.requestDownload);
|
|
router.post('/:id/approve-download/:requestId', requireRole('ADMIN'), assetController.approveDownload);
|
|
router.post('/:id/reject-download/:requestId', requireRole('ADMIN'), assetController.rejectDownload);
|
|
|
|
export default router;
|