Added Spotify tracking. Fixed filters when none given.
This commit is contained in:
48
controllers/home.js
Normal file
48
controllers/home.js
Normal file
@ -0,0 +1,48 @@
|
||||
const axios = require("axios");
|
||||
const config = require("../config/configuration");
|
||||
const fs = require("fs/promises");
|
||||
const logger = require("../services/logging");
|
||||
const querystring = require('node:querystring');
|
||||
|
||||
function authorizeSpotify(req, res) {
|
||||
res.redirect("https://accounts.spotify.com/authorize?" + querystring.stringify({
|
||||
response_type: "code",
|
||||
client_id: config.spotify.client_id,
|
||||
scope: "user-read-playback-state user-read-currently-playing",
|
||||
redirect_uri: config.spotify.redirect_uri,
|
||||
}));
|
||||
}
|
||||
|
||||
async function callback(req, res) {
|
||||
const code = req.query.code;
|
||||
|
||||
try {
|
||||
const response = await axios.post("https://accounts.spotify.com/api/token",
|
||||
{
|
||||
code: code,
|
||||
redirect_uri: config.spotify.redirect_uri,
|
||||
grant_type: "authorization_code"
|
||||
},
|
||||
{
|
||||
headers: {
|
||||
"Authorization": "Basic " + new Buffer.from(config.spotify.client_id + ':' + config.spotify.client_secret).toString('base64'),
|
||||
"Content-Type": "application/x-www-form-urlencoded"
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
const data = response.data;
|
||||
data["expires_at"] = Date.now() + data["expires_in"] * 1000;
|
||||
await fs.writeFile("credentials.spotify.json", JSON.stringify(data));
|
||||
|
||||
res.redirect("/");
|
||||
} catch (ex) {
|
||||
logger.error(ex, "Failed to get Spotify oauth.");
|
||||
res.send({ 'error': "Something went wrong with spotify's oauth flow" });
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
authorizeSpotify,
|
||||
callback
|
||||
}
|
Reference in New Issue
Block a user