adp
Version:
Toolkit for interfacing with ADP Marketplace API's
68 lines (52 loc) • 1.57 kB
JavaScript
var apiRequests = require('./apiRequests');
var ssl = require('./config/sslsettings');
var adp = {
user:apiRequests
};
// adp.login = ssl.s_full_token_endpoint();
adp.authenticate = function(code) {
// construct request options for Bearer token API call.
var bearerOptions = {
'url': ssl.s_bearer_token_endpoint,
'agentOptions': ssl.agent_options(),
'strictSSL' : false,
'form': {
'client_id':ssl.s_client_id,
'client_secret':ssl.s_client_secret,
'grant_type':ssl.s_grant_type,
'code':code,
'redirect_uri':ssl.s_callback_redirect_uri
}
};
request.post(bearerOptions, function bearerPost(err,response,body) {
if(err || response.statusCode != '200'){
res.setHeader('Content-Type', 'text/html');
res.writeHead(response.statusCode);
res.write('An access token was not received.<br>');
res.write(JSON.stringify(response));
return res.end();
}
body = JSON.parse(body);
return {
access_token: body.access_token,
id_token: parseidToken(body.id_token)
}
}
}
function parseidToken(token) {
var tokenString = new Buffer(token.split('.')[1], 'base64').toString();
var returnObject = JSON.parse(tokenString);
var parsedUrl = url.parse(returnObject.sub).path.split('/');
returnObject.ooid = parsedUrl[2];
returnObject.aoid = parsedUrl[3];
return returnObject;
}
function generateHeaders(session) {
return {
Authorization: 'Bearer '+ session.access_token,
associateoid: session.id_token.aoid,
orgoid: session.id_token.ooid,
sm_serversessionid: session.access_token
}
}
module.exports = adp;