spotify.js 947 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. const config = require('config');
  2. const client = config.get("apis.spotify.client");
  3. const secret = config.get("apis.spotify.secret");
  4. const OAuth2 = require('oauth').OAuth2;
  5. const SpotifyOauth = new OAuth2(
  6. client,
  7. secret,
  8. 'https://accounts.spotify.com/',
  9. null,
  10. 'api/token',
  11. null);
  12. let apiResults = {
  13. access_token: "",
  14. token_type: "",
  15. expires_in: 0,
  16. expires_at: 0,
  17. scope: "",
  18. };
  19. let lib = {
  20. getToken: () => {
  21. return new Promise((resolve, reject) => {
  22. if (Date.now() > apiResults.expires_at) {
  23. lib.requestToken(() => {
  24. resolve(apiResults.access_token);
  25. });
  26. } else resolve(apiResults.access_token);
  27. });
  28. },
  29. requestToken: (cb) => {
  30. SpotifyOauth.getOAuthAccessToken(
  31. '',
  32. { 'grant_type': 'client_credentials' },
  33. (e, access_token, refresh_token, results) => {
  34. apiResults = results;
  35. apiResults.expires_at = Date.now() + (results.expires_in * 1000);
  36. cb();
  37. });
  38. }
  39. };
  40. module.exports = lib;