diff --git a/server/apiRoutes.js b/server/apiRoutes.js index 6c8a789..5c88658 100644 --- a/server/apiRoutes.js +++ b/server/apiRoutes.js @@ -29,17 +29,17 @@ router.get('/callback', async function(req, res) { const state = req.query.state || null; const storedState = req.cookies ? req.cookies.stateKey : null; const clientURL = process.env.CLIENT_URL; - const redirectTo = req.cookies.redirectTo || ""; + const redirectTo = req.cookies.redirectTo || ''; try { if (state === null || state !== storedState || code == null) { // eslint-disable-next-line no-console - throw "Authentication error: State invalid"; + throw 'Authentication error: State invalid'; } res.clearCookie('stateKey'); res.clearCookie('redirectTo'); - let data = await user.spotifyApi.authorizationCodeGrant(code); + const data = await user.spotifyApi.authorizationCodeGrant(code); // 95 to prevent access token expiring early because of delays in this request res.cookie('access_token', data.body.access_token, { @@ -55,36 +55,35 @@ router.get('/callback', async function(req, res) { sameSite: true, }); - let userID = await user.getUserId(data.body.access_token); + const userID = await user.getUserId(data.body.access_token); res.cookie('userID', userID); } catch (e) { console.log(e); } finally { res.redirect(`${clientURL}/${redirectTo}`); } - }); router.get('/refresh', async (req, res) => { try { - let data = await user.refreshToken(req.cookies.refresh_token); + const data = await user.refreshToken(req.cookies.refresh_token); res.json({ access_token: data.body.access_token, - maxAge: data.body.expires_in * 0.95 * 1000 + maxAge: data.body.expires_in * 0.95 * 1000, }); } catch (e) { - console.log("Error while refreshing token"); + console.log('Error while refreshing token'); console.log(e); } }); router.get('/playlists', async (req, res) => { try { - let allUserPlaylists = await playlist.loadPlaylists(req); + const allUserPlaylists = await playlist.loadPlaylists(req); res.json({ playlists: allUserPlaylists }); } catch (e) { console.log(e); - res.status(500).send("Server error"); + res.status(500).send('Server error'); } }); @@ -93,29 +92,34 @@ router.get('/results/:id', async (req, res) => { const playlistId = req.params.id; console.log(`Playlist ID: ${playlistId}`); - const isLoggedIn = req.cookies.access_token !== undefined && req.cookies.access_token !== null && req.cookies.access_token !== ""; + const isLoggedIn = + req.cookies.access_token !== undefined && + req.cookies.access_token !== null && + req.cookies.access_token !== ''; - let loggedInSpotify = isLoggedIn ? await user.createLoggedInUser(req, res) : await user.createAPI(); + const loggedInSpotify = isLoggedIn + ? await user.createLoggedInUser(req, res) + : await user.createAPI(); - const {parameters, tracks, artists} = await stats.calculateStats(loggedInSpotify, playlistId, isLoggedIn); + const { parameters } = await stats.calculateStats(loggedInSpotify, playlistId, isLoggedIn); console.log(parameters); const songs = await playlist.getRecommendations(loggedInSpotify, parameters); res.json({ songs, parameters }); } catch (e) { console.log(e); - res.status(500).send("Server error"); + res.status(500).send('Server error'); } }); router.post('/recommendations', async (req, res) => { try { // Parse parameters from request - let parameters = {} - parameters.seed_artists = req.body.seeds.artists.map((artist) => artist.id); - parameters.seed_tracks = req.body.seeds.tracks.map((track) => track.id); + const parameters = {}; + parameters.seed_artists = req.body.seeds.artists.map(artist => artist.id); + parameters.seed_tracks = req.body.seeds.tracks.map(track => track.id); - const relevant_features = [ + const relevantFeatures = [ 'danceability', 'energy', 'acousticness', @@ -124,7 +128,7 @@ router.post('/recommendations', async (req, res) => { 'popularity', ]; - for(let feature of relevant_features) { + for (const feature of relevantFeatures) { parameters[`min_${feature}`] = req.body.parameters[feature].min; parameters[`max_${feature}`] = req.body.parameters[feature].max; } @@ -133,22 +137,23 @@ router.post('/recommendations', async (req, res) => { const spotify = await user.createAPI(); const results = await spotify.getRecommendations(parameters); - res.json({body: results.body}); + res.json({ body: results.body }); } catch (e) { + // eslint-disable-next-line no-console console.log(e); - res.status(500).send("Server error"); + res.status(500).send('Server error'); } }); router.post('/save', async (req, res) => { try { - let {name, tracks} = req.body; + const { name, tracks } = req.body; const loggedInSpotify = await user.createLoggedInUser(req, res); - let link = await playlist.createNewPlaylist(loggedInSpotify, name, tracks); - res.status(200).json({link}); + const link = await playlist.createNewPlaylist(loggedInSpotify, name, tracks); + res.status(200).json({ link }); } catch (e) { console.log(e); - res.status(500).send("Server error"); + res.status(500).send('Server error'); } }); @@ -156,8 +161,8 @@ router.get('/search', async (req, res) => { try { const spotify = await user.createAPI(); const { searchTerm, types, limit } = req.query; - const results = await spotify.search(searchTerm, types, {limit}); - res.json({body: results.body}); + const results = await spotify.search(searchTerm, types, { limit }); + res.json({ body: results.body }); } catch (e) { console.log(e); } @@ -167,8 +172,8 @@ router.get('/artists', async (req, res) => { try { const spotify = await user.createAPI(); const { artistIds } = req.query; - const results = await spotify.getArtists(artistIds); - res.json({body: results.body}); + const results = await spotify.getArtists(artistIds); + res.json({ body: results.body }); } catch (e) { console.log(e); } @@ -178,11 +183,11 @@ router.get('/tracks', async (req, res) => { try { const spotify = await user.createAPI(); const { trackIds } = req.query; - const results = await spotify.getTracks(trackIds); - res.json({body: results.body}); + const results = await spotify.getTracks(trackIds); + res.json({ body: results.body }); } catch (e) { console.log(e); } }); -module.exports = router \ No newline at end of file +module.exports = router; diff --git a/server/index.js b/server/index.js index 65e14c7..b206de3 100644 --- a/server/index.js +++ b/server/index.js @@ -5,32 +5,33 @@ const bodyParser = require('body-parser'); const cookieParser = require('cookie-parser'); const cors = require('cors'); const compression = require('compression'); -const helmet = require('helmet') +const helmet = require('helmet'); const app = express(); app.set('view engine', 'ejs'); app.use(express.static('public')); app.use(cookieParser()); app.use(bodyParser.urlencoded({ extended: true })); -app.use(bodyParser.json()) +app.use(bodyParser.json()); app.use(compression()); -app.use(helmet()) +app.use(helmet()); const api = require('./apiRoutes'); const corsOptions = { origin: process.env.CLIENT_URL, - credentials: true + credentials: true, }; app.use(cors(corsOptions)); app.use(express.static('build')); app.use('/api', api); -app.get('*', function (req, res) { +app.get('*', function(req, res) { res.sendFile('./build/index.html', { root: __dirname }); }); app.listen(8080, function() { + // eslint-disable-next-line no-console console.log('Spotify playlist generator started'); });