UNPKG

apiconnect-cli-login-bluemix

Version:

Plugin for IBM API Connect Developer Toolkit.

140 lines (117 loc) 3.21 kB
/********************************************************* {COPYRIGHT-TOP} *** * Licensed Materials - Property of IBM * 5725-Z22, 5725-Z63, 5725-U33, 5725-Z63 * * (C) Copyright IBM Corporation 2016, 2017 * * All Rights Reserved. * US Government Users Restricted Rights - Use, duplication or disclosure * restricted by GSA ADP Schedule Contract with IBM Corp. ********************************************************** {COPYRIGHT-END} **/ // Node module: apiconnect-cli-login-bluemix var rp = require('request-promise'); var fs = require('fs'); var path = require('path'); var Promise = require('bluebird'); var createError = require('http-errors'); var bluemixSecurity = module.exports; var REFRESH_ROUTE = '/refresh'; var TOKEN_ROUTE = '/token'; var CERT_ROUTE = '/cert'; var PASSCODE_ROUTE = '/passcode-url'; var PASSWORD_ROUTE = '/password-token'; var APIKEY_ROUTE = '/apikey'; bluemixSecurity.apiKeyForToken = function(apikey, url) { var options = { method: 'POST', url: APIKEY_ROUTE, baseUrl: url, json: true, qs: { apikey: apikey }, }; return rp(options).then(function(body) { return body.jwt; }).catch(createBluemixSecurityError); }; bluemixSecurity.passcodeForToken = function(passcode, url) { var options = { method: 'POST', url: TOKEN_ROUTE, baseUrl: url, json: true, qs: { passcode: passcode }, }; return rp(options).then(function(body) { return body.jwt; }).catch(createBluemixSecurityError); }; bluemixSecurity.codeForToken = function(code, url) { var options = { method: 'GET', url: TOKEN_ROUTE, baseUrl: url, json: true, qs: { code: code }, }; return rp(options).then(function(body) { return body.jwt; }).catch(createBluemixSecurityError); }; bluemixSecurity.refresh = function(token, url) { var options = { method: 'POST', url: REFRESH_ROUTE, baseUrl: url, json: { jwt: token }, }; return rp(options).then(function(body) { return body.jwt; }).catch(createBluemixSecurityError); }; bluemixSecurity.getPasscodeURL = function(url) { var options = { method: 'GET', url: PASSCODE_ROUTE, baseUrl: url, json: true, }; return rp(options).then(function(body) { return body.passcodeURL; }).catch(createBluemixSecurityError); }; bluemixSecurity.passwordToken = function(username, password, url) { var options = { method: 'POST', url: PASSWORD_ROUTE, baseUrl: url, json: true, body: { username: username, password: password, }, }; return rp(options).then(function(body) { return body.jwt; }).catch(createBluemixSecurityError); }; bluemixSecurity.getCert = function(url) { var options = { method: 'GET', url: CERT_ROUTE, baseUrl: url, json: true, }; return rp(options).catch(function() { return { alg: 'ES384', cert: fs.readFileSync(path.resolve(__dirname, '../', 'APIConnectDevCert.pem')), }; }); }; function createBluemixSecurityError(res) { var error_message = res.message; if (res.error.error_message) { error_message = res.error.error_message; } return Promise.reject(createError(res.statusCode, error_message)); }