feat(backend): login, most endpoints complete

This commit is contained in:
2026-09-07 12:28:09 +02:00
parent 4d4ddfe255
commit ab08a94d55
20 changed files with 737 additions and 108 deletions
+80 -10
View File
@@ -1,21 +1,91 @@
import bodyParser from 'body-parser';
import corsManager from '../../corsManager';
import express from 'express';
import {
getLoginSdk
} from '../../sdk';
import logger from '../../logger';
import rooms from '../../manager/rooms';
import {
sseMiddleware
} from '../../manager/rooms/sse';
const routes = ( app: express.Application ) => {
app.get( '/room/:id/connect', ( request: express.Request, response: express.Response ) => {
const routes = ( app: express.Application, foss: boolean ) => {
const sdk = getLoginSdk( foss );
app.get( '/room/:id/connect', corsManager.middleware( false ), sseMiddleware( 'client' ) );
app.get( '/room/:id/poll', corsManager.middleware( false ), ( request: express.Request, response: express.Response ) => {
if ( typeof request.params.id !== 'string' )
return response.sendStatus( 400 );
const room = rooms.get( request.params.id );
if ( !room ) response.sendStatus( 404 );
const lastRequest = parseInt( String( request.query.last ) ) ?? 0;
response.send(
JSON.stringify( {
'state': room.state,
'playlist': lastRequest < room.playlist.lastUpdate ? room.playlist : undefined
} )
);
} );
app.get( '/room/:id/poll', ( request: express.Request, response: express.Response ) => {
app.options( '/room/:id/update/playlist', corsManager.middleware( false ) );
app.post(
'/room/:id/update/playlist',
corsManager.middleware( false ),
sdk.loginCheck(),
bodyParser.json(),
( request: express.Request, response: express.Response ) => {
if ( typeof request.params.id !== 'string' )
return response.sendStatus( 400 );
} );
try {
if ( rooms.updatePlaylist(
request.params.id,
sdk.getUID( request )!,
request.body.playlist ? JSON.parse( request.body.playlist ) : []
) )
response.sendStatus( 200 );
else
response.sendStatus( 400 );
} catch ( err ) {
logger.error( 'Failed sending updated playlists with error', err );
response.sendStatus( 500 );
}
}
);
app.get( '/room/:id/update/playlist', ( request: express.Request, response: express.Response ) => {
app.options( '/room/:id/update/state', corsManager.middleware( false ) );
app.post(
'/room/:id/update/state',
corsManager.middleware( false ),
sdk.loginCheck(),
bodyParser.json(),
( request: express.Request, response: express.Response ) => {
if ( typeof request.params.id !== 'string' )
return response.sendStatus( 400 );
} );
app.get( '/room/:id/update/state', ( request: express.Request, response: express.Response ) => {
} );
try {
if ( rooms.updateState(
request.params.id,
sdk.getUID( request )!,
request.body.playing ?? false,
request.body.index ?? -1,
request.body.start ?? new Date().getTime()
) )
response.sendStatus( 200 );
else
response.sendStatus( 400 );
} catch ( err ) {
logger.error( 'Failed sending updated state with error', err );
response.sendStatus( 500 );
}
}
);
};
export default {