Dynamic realtime profile ReadMe linked with spotify
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

46 lines
1.2 KiB

import fetch from "isomorphic-unfetch";
import { stringify } from "querystring";
const {
SPOTIFY_CLIENT_ID: client_id,
SPOTIFY_CLIENT_SECRET: client_secret,
SPOTIFY_REFRESH_TOKEN: refresh_token,
} = process.env;
const basic = Buffer.from(`${client_id}:${client_secret}`).toString("base64");
const Authorization = `Basic ${basic}`;
async function getAuthorizationToken() {
const url = new URL("https://accounts.spotify.com/api/token");
const body = stringify({
grant_type: "refresh_token",
refresh_token,
});
const response = await fetch(`${url}`, {
method: "POST",
headers: {
Authorization,
"Content-Type": "application/x-www-form-urlencoded",
},
body,
}).then((r) => r.json());
return `Bearer ${response.access_token}`;
}
const NOW_PLAYING_ENDPOINT = `https://api.spotify.com/v1/me/player/currently-playing`;
export async function nowPlaying() {
const Authorization = await getAuthorizationToken();
const response = await fetch(NOW_PLAYING_ENDPOINT, {
headers: {
Authorization,
},
});
const { status } = response;
if (status === 204) {
return {};
} else if (status === 200) {
const data = await response.json();
return data;
}
}