mirror of
https://github.com/janishutz/MusicPlayer.git
synced 2026-09-10 14:25:24 +02:00
feat(backend): login, most endpoints complete
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user