UNPKG

adp

Version:

Toolkit for interfacing with ADP Marketplace API's

68 lines (52 loc) 1.57 kB
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;