Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fixed some eslint issues #11

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 37 additions & 32 deletions server/apiRoutes.js
Original file line number Diff line number Diff line change
Expand Up @@ -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, {
Expand All @@ -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');
}
});

Expand All @@ -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',
Expand All @@ -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;
}
Expand All @@ -133,31 +137,32 @@ 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');
}
});

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);
}
Expand All @@ -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);
}
Expand All @@ -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
module.exports = router;
11 changes: 6 additions & 5 deletions server/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
});