59 lines
1.6 KiB
JavaScript
59 lines
1.6 KiB
JavaScript
// Collezzione di tutte le api che prendono i dati da minio
|
|
//api.mebboat.it/storage
|
|
|
|
const express = require('express');
|
|
const { getBuckets, getBucket, getObject, getObjects, getFileStream } = require('../storage/minio');
|
|
const router = express.Router();
|
|
|
|
/**
|
|
* Restituisce una lista con tutti i bucket del database,
|
|
* altrimenti restituisce i file del bucket passato come parametro
|
|
*
|
|
* @param {string} bucket - il bucket
|
|
*/
|
|
router.get('/', async (req, res) => {
|
|
const { bucket } = req.query;
|
|
|
|
if (bucket == undefined) {
|
|
const buckets = await getBuckets();
|
|
res.status(200).json(buckets);
|
|
} else {
|
|
const returnBucket = await getBucket(bucket);
|
|
res.status(200).json(returnBucket);
|
|
}
|
|
})
|
|
|
|
router.get('/files', async (req, res) => {
|
|
const { bucket, fileID } = req.query;
|
|
|
|
if (bucket == undefined) {
|
|
res.status(400).json({ error: "No bucket name in the request" });
|
|
} else {
|
|
if (fileID == undefined) {
|
|
const files = await getObjects(bucket);
|
|
res.status(200).json(files);
|
|
} else {
|
|
const file = await getObject(bucket, fileID);
|
|
res.status(200).json(file);
|
|
}
|
|
}
|
|
})
|
|
|
|
router.get('/file', async (req, res) => {
|
|
const { bucket, fileID } = req.query;
|
|
const stream = await getFileStream(bucket, fileID);
|
|
res.setHeader('Content-Type', 'application/octet-stream');
|
|
stream.pipe(res);
|
|
})
|
|
|
|
router.post('/upload', async (req, res) => {
|
|
const { bucket } = req.query;
|
|
const files = await getObjects(bucket);
|
|
res.status(200).json(files);
|
|
})
|
|
|
|
router.get('/download', async (req, res) => {
|
|
|
|
})
|
|
|
|
module.exports = router; |