Split web and player build artifacts
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
// Internal sync trigger routes for player-driven queue flushes.
|
||||
|
||||
const { verifyRequestAuth } = require('#src/request-auth');
|
||||
const { collectFontLibrarySyncOperations } = require('#src/web/lib/media/font-library');
|
||||
|
||||
function requireRequestAuth(req, res, next) {
|
||||
if (!verifyRequestAuth(req)) {
|
||||
@@ -11,21 +12,77 @@ function requireRequestAuth(req, res, next) {
|
||||
}
|
||||
|
||||
module.exports = function registerInternalSyncRoutes(app, deps) {
|
||||
const backgroundTaskQueue = deps && deps.backgroundTaskQueue;
|
||||
const uploadSyncService = deps && deps.uploadSyncService;
|
||||
const mediaDir = String(deps && deps.mediaDir || '').trim();
|
||||
|
||||
if (!uploadSyncService || typeof uploadSyncService.flushPendingPlayerUploadSyncs !== 'function' || typeof uploadSyncService.runMediaSyncTask !== 'function' || !mediaDir) {
|
||||
if (!backgroundTaskQueue || typeof backgroundTaskQueue.enqueueTask !== 'function' || !uploadSyncService || !mediaDir) {
|
||||
throw new Error('registerInternalSyncRoutes requires the sync dependencies.');
|
||||
}
|
||||
|
||||
app.post('/api/internal/sync/player-media', requireRequestAuth, async function (_req, res, next) {
|
||||
try {
|
||||
await uploadSyncService.runMediaSyncTask({
|
||||
mode: 'initial',
|
||||
uploadDir: mediaDir
|
||||
const requestBody = _req.body && typeof _req.body === 'object' && !Array.isArray(_req.body)
|
||||
? _req.body
|
||||
: {};
|
||||
const playerIdentifier = String(requestBody.playerIdentifier || requestBody.deviceId || '').trim();
|
||||
const playerPublicBaseUrl = String(requestBody.playerPublicBaseUrl || '').trim();
|
||||
const playerInternalBaseUrl = String(requestBody.playerInternalBaseUrl || '').trim();
|
||||
const task = await backgroundTaskQueue.enqueueTask({
|
||||
key: 'player-media-sync',
|
||||
title: 'Player media sync',
|
||||
category: 'media-sync',
|
||||
taskType: 'media-sync',
|
||||
metadata: {
|
||||
playerIdentifier: playerIdentifier || null,
|
||||
playerPublicBaseUrl: playerPublicBaseUrl || null,
|
||||
playerInternalBaseUrl: playerInternalBaseUrl || null,
|
||||
playerLabel: playerIdentifier || playerPublicBaseUrl || playerInternalBaseUrl || null
|
||||
},
|
||||
payload: {
|
||||
mode: 'initial',
|
||||
uploadDir: mediaDir,
|
||||
playerIdentifier: playerIdentifier,
|
||||
playerPublicBaseUrl: playerPublicBaseUrl,
|
||||
playerInternalBaseUrl: playerInternalBaseUrl
|
||||
}
|
||||
});
|
||||
await uploadSyncService.flushPendingPlayerUploadSyncs();
|
||||
res.json({ ok: true });
|
||||
res.status(202).json({ ok: true, queued: true, task: task });
|
||||
} catch (error) {
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
|
||||
app.post('/api/internal/sync/player-font', requireRequestAuth, async function (_req, res, next) {
|
||||
try {
|
||||
const requestBody = _req.body && typeof _req.body === 'object' && !Array.isArray(_req.body)
|
||||
? _req.body
|
||||
: {};
|
||||
const playerIdentifier = String(requestBody.playerIdentifier || requestBody.deviceId || '').trim();
|
||||
const playerPublicBaseUrl = String(requestBody.playerPublicBaseUrl || '').trim();
|
||||
const playerInternalBaseUrl = String(requestBody.playerInternalBaseUrl || '').trim();
|
||||
const operations = collectFontLibrarySyncOperations(mediaDir);
|
||||
const task = await backgroundTaskQueue.enqueueTask({
|
||||
key: 'player-font-sync',
|
||||
title: 'Player font sync',
|
||||
category: 'fonts',
|
||||
taskType: 'font-sync',
|
||||
metadata: {
|
||||
playerIdentifier: playerIdentifier || null,
|
||||
playerPublicBaseUrl: playerPublicBaseUrl || null,
|
||||
playerInternalBaseUrl: playerInternalBaseUrl || null,
|
||||
playerLabel: playerIdentifier || playerPublicBaseUrl || playerInternalBaseUrl || null
|
||||
},
|
||||
payload: {
|
||||
mode: 'initial',
|
||||
uploadDir: mediaDir,
|
||||
operations: operations,
|
||||
playerIdentifier: playerIdentifier,
|
||||
playerPublicBaseUrl: playerPublicBaseUrl,
|
||||
playerInternalBaseUrl: playerInternalBaseUrl
|
||||
}
|
||||
});
|
||||
res.status(202).json({ ok: true, queued: true, task: task });
|
||||
} catch (error) {
|
||||
next(error);
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ function registerRoutes(app, deps) {
|
||||
registerSignageRoutes(app, deps);
|
||||
registerSettingsAndContentRoutes(app, deps);
|
||||
registerInternalSyncRoutes(app, {
|
||||
backgroundTaskQueue: deps.backgroundTaskQueue,
|
||||
uploadSyncService: deps.uploadSyncService,
|
||||
mediaDir: deps.mediaDir
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user