diff --git a/callback-server/app.js b/callback-server/app.js index 6146746..a9a17cf 100644 --- a/callback-server/app.js +++ b/callback-server/app.js @@ -12,48 +12,48 @@ const redirectUri = 'https://felixmielcarek.github.io/callback/'; //#endregion //#region APP INIT - const app = express() app.listen(port, () => { console.log(`Big brother is listening on port ${port}`) }) - //#endregion //#region ACCESS TOKEN app.get('/settings/deactivate', async (req,res) => { + //console.log(" const code = req.query.code; - - const pool = mariadb.createPool({ - host: 'felixmielcarek-bigbrotherdb', - user: process.env.MARIADB_USER, - database: process.env.MARIADB_DATABASE, - password: process.env.MARIADB_PASSWORD, - connectionLimit: 5 -}); - - var authOptions = { + const authOptions = { url: 'https://accounts.spotify.com/api/token', method: 'post', json: true, data: { code: code, redirect_uri: redirectUri, grant_type: 'authorization_code' }, headers: { 'content-type': 'application/x-www-form-urlencoded', 'Authorization': 'Basic ' + (new Buffer.from(clientId + ':' + clientSecret).toString('base64')) - } + } }; - - const response1 = await axios(authOptions); - const accessToken = response1.data.access_token - - let conn; + let userId; try { - conn = await pool.getConnection() + const response1 = await axios(authOptions); + const accessToken = response1.data.access_token; const response2 = await axios.get(`https://api.spotify.com/v1/me`, { headers: { 'Authorization': 'Bearer ' + accessToken, } }); + userId = response2.data.SpotifyId; + } catch (error) { console.log(`Error getting user Spotify id: ${error}`) } + + const sqlQuery = ` + DELETE FROM users + WHERE spotifyid = ?; + `; + + try { + const pool = mariadb.createPool({ + host: 'felixmielcarek-bigbrotherdb', + user: process.env.MARIADB_USER, + database: process.env.MARIADB_DATABASE, + password: process.env.MARIADB_PASSWORD, + connectionLimit: 5 + }); - const sqlQuery = ` - DELETE FROM users - WHERE spotifyid = ?; - `; + const conn = await pool.getConnection(); - conn.query(sqlQuery, [response2.data.SpotifyId], (err, res) => { + conn.query(sqlQuery, [userId], (err, res) => { if (err) { console.error('Error executing query', err); return; @@ -61,21 +61,12 @@ app.get('/settings/deactivate', async (req,res) => { console.log('Data deleted successfully'); conn.end(); }); - } catch (error) { console.log('Error getting user Spotify id') } + } catch (error) { console.log(`Error accessing database: ${error}`) } }) app.get('/', async (req, res) => { - const pool = mariadb.createPool({ - host: 'felixmielcarek-bigbrotherdb', - user: process.env.MARIADB_USER, - database: process.env.MARIADB_DATABASE, - password: process.env.MARIADB_PASSWORD, - connectionLimit: 5 -}); - const code = req.query.code; - - var authOptions = { + const authOptions = { url: 'https://accounts.spotify.com/api/token', method: 'post', json: true, data: { code: code, redirect_uri: redirectUri, grant_type: 'authorization_code' }, headers: { @@ -83,31 +74,38 @@ app.get('/', async (req, res) => { 'Authorization': 'Basic ' + (new Buffer.from(clientId + ':' + clientSecret).toString('base64')) } }; - - const response1 = await axios(authOptions); - const accessToken = response1.data.access_token - const refreshToken = response1.data.refresh_token - - let conn; + let data; try { - conn = await pool.getConnection() - + const response1 = await axios(authOptions); + const accessToken = response1.data.access_token + const refreshToken = response1.data.refresh_token const response2 = await axios.get(`https://api.spotify.com/v1/me`, { headers: { 'Authorization': 'Bearer ' + accessToken, } }); - - const data = { + data = { SpotifyId: response2.data.id, AccessToken: accessToken, RefreshToken: refreshToken }; + } catch (error) { console.log(`Error getting user Spotify id: ${error}`) } + + const sqlQuery = ` + INSERT INTO users (spotifyid, accesstoken, refreshtoken) + VALUES (?, ?, ?) + ON DUPLICATE KEY UPDATE + accesstoken = VALUES(accesstoken), + refreshtoken = VALUES(refreshtoken); + `; + + try { + const pool = mariadb.createPool({ + host: 'felixmielcarek-bigbrotherdb', + user: process.env.MARIADB_USER, + database: process.env.MARIADB_DATABASE, + password: process.env.MARIADB_PASSWORD, + connectionLimit: 5 + }); - const sqlQuery = ` - INSERT INTO users (spotifyid, accesstoken, refreshtoken) - VALUES (?, ?, ?) - ON DUPLICATE KEY UPDATE - accesstoken = VALUES(accesstoken), - refreshtoken = VALUES(refreshtoken); - `; + const conn = await pool.getConnection(); conn.query(sqlQuery, [data.SpotifyId, data.AccessToken, data.RefreshToken], (err, res) => { if (err) { @@ -117,6 +115,6 @@ app.get('/', async (req, res) => { console.log('Data inserted/updated successfully'); conn.end(); }); - } catch (error) { console.log('Error getting user Spotify id') } + } catch (error) { console.log(`Error accessing database: ${error}`) } }); -//#endregion \ No newline at end of file +//#endregion