-
Notifications
You must be signed in to change notification settings - Fork 0
/
auth-callback-handler.js
45 lines (39 loc) · 1.05 KB
/
auth-callback-handler.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
const authTokenHandler = require('../token')
const { spotify } = require('../../../../config/environment')
const { post } = require('../../../utils/http')
const stringify = require('../../../utils/stringify')
module.exports = (req, res) => {
const { stateKey, authorizeTokenUrl } = spotify
const params = buildParams(req)
const config = buildConfig()
res.clearCookie(stateKey)
post(authorizeTokenUrl, params, config).then(
response => {
authTokenHandler(res, response.data)
},
err => {
const { status, message } = err.response.data.error
res.status(status)
res.json({ message })
}
)
}
function buildParams(request) {
return stringify({
code: request.query.code,
redirect_uri: spotify.authorizeCallbackUrl,
grant_type: 'authorization_code'
})
}
function buildConfig() {
return {
headers: {
Authorization: buildAuthorizationHeader()
}
}
}
function buildAuthorizationHeader() {
return `Basic ${Buffer.from(
`${spotify.clientID}:${spotify.clientSecret}`
).toString('base64')}`
}