|
|
@@ -8,6 +8,15 @@ const MediaFileMetaModel = require('../model/mediaItemMeta.js').MediaFileMetaMod
|
|
|
const MediaFileTagModel = require('../model/mediaItemTag.js').MediaFileTagModel;
|
|
|
const { AccessModel, ACCESS_TYPE, ACCESS_GRANT } = require('../model/access.js');
|
|
|
|
|
|
+function MediaToJson(mediaData) {
|
|
|
+ if (mediaData.accessType === ACCESS_GRANT.readNoMeta)
|
|
|
+ mediaData.meta = {
|
|
|
+ height: mediaData.meta?.height,
|
|
|
+ width: mediaData.meta?.width
|
|
|
+ };
|
|
|
+ return mediaData;
|
|
|
+}
|
|
|
+
|
|
|
module.exports = { register: app => {
|
|
|
app.router.get("/api/access/list", (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
|
@@ -36,7 +45,7 @@ module.exports = { register: app => {
|
|
|
if (!data || data.accessType !== ACCESS_GRANT.write)
|
|
|
return app.routerUtils.onPageNotFound(res);
|
|
|
await app.databaseHelper.remove(MediaFileTagModel, { md5sum: data.md5sum, tag: decodeURIComponent(req.params.tag), fromMeta: 0 });
|
|
|
- app.routerUtils.jsonResponse(res, await MediaService.fetchOne(app, req.params.id, req.sessionObj?.accessList));
|
|
|
+ app.routerUtils.jsonResponse(res, MediaToJson(await MediaService.fetchOne(app, req.params.id, req.sessionObj?.accessList)));
|
|
|
});
|
|
|
app.router.put("/api/media/:id/tag", async (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
|
@@ -53,7 +62,7 @@ module.exports = { register: app => {
|
|
|
}
|
|
|
let tag = new MediaFileTagModel(data.md5sum, requestedTag, false);
|
|
|
await app.databaseHelper.insertOne(tag);
|
|
|
- app.routerUtils.jsonResponse(res, await MediaService.fetchOne(app, req.params.id, req.sessionObj?.accessList));
|
|
|
+ app.routerUtils.jsonResponse(res, MediaToJson(await MediaService.fetchOne(app, req.params.id, req.sessionObj?.accessList)));
|
|
|
});
|
|
|
app.router.patch("/api/media/:id/meta/:key", async (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
|
@@ -68,7 +77,7 @@ module.exports = { register: app => {
|
|
|
let newMediaItemMedia = new MediaFileMetaModel(data.md5sum, req.params.key, req.body.value, false);
|
|
|
await app.databaseHelper.upsertOne(newMediaItemMedia);
|
|
|
}
|
|
|
- app.routerUtils.jsonResponse(res, await MediaService.fetchOne(app, req.params.id, req.sessionObj?.accessList));
|
|
|
+ app.routerUtils.jsonResponse(res, MediaToJson(await MediaService.fetchOne(app, req.params.id, req.sessionObj?.accessList)));
|
|
|
});
|
|
|
app.router.get("/api/media/list", async (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
|
@@ -82,18 +91,18 @@ module.exports = { register: app => {
|
|
|
let fromDate = parseInt(req.body?.from);
|
|
|
let count = parseInt(req.body?.count);
|
|
|
app.routerUtils.jsonResponse(res, {
|
|
|
- data: await MediaService.fetchMediasWithAccess(
|
|
|
+ data: (await MediaService.fetchMediasWithAccess(
|
|
|
app,
|
|
|
isNaN(fromDate) ? 0 : fromDate,
|
|
|
isNaN(count) ? 25 : Math.min(150, count),
|
|
|
- req.sessionObj?.accessList),
|
|
|
+ req.sessionObj?.accessList)).map(MediaToJson),
|
|
|
first: first,
|
|
|
last: last
|
|
|
});
|
|
|
});
|
|
|
app.router.get("/api/media/:md5sum", async (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
|
- let data = await MediaService.fetchOne(app, req.params.md5sum, req.sessionObj?.accessList);
|
|
|
+ let data = MediaToJson(await MediaService.fetchOne(app, req.params.md5sum, req.sessionObj?.accessList));
|
|
|
if (!data)
|
|
|
return app.routerUtils.onPageNotFound(res);
|
|
|
app.routerUtils.jsonResponse(res, data);
|
|
|
@@ -112,6 +121,7 @@ module.exports = { register: app => {
|
|
|
}
|
|
|
if (!thumbnail)
|
|
|
return app.routerUtils.onPageNotFound(res);
|
|
|
+ //if (data.accessType === ACCESS_GRANT.readNoMeta) -> trim metadata
|
|
|
res.setHeader("Content-Type", "image/jpeg");
|
|
|
res.setHeader("Content-Length", fs.statSync(thumbnail.name)?.size || undefined);
|
|
|
res.setHeader("Cache-Control", "private, max-age=2630000"); // 1 month cache
|
|
|
@@ -129,6 +139,7 @@ module.exports = { register: app => {
|
|
|
let data = await MediaService.fetchOne(app, req.params.md5sum, req.sessionObj?.accessList);
|
|
|
if (!data)
|
|
|
return app.routerUtils.onPageNotFound(res);
|
|
|
+ //if (data.accessType === ACCESS_GRANT.readNoMeta) -> trim metadata
|
|
|
const fileName = Path.basename(data.path);
|
|
|
res.setHeader("Content-Type", mime.lookup(data.path));
|
|
|
res.setHeader("Content-Length", fs.statSync(data.path)?.size || undefined);
|