Skip to content

Update lr.js #30

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
207 changes: 58 additions & 149 deletions loginradius-sdk/sdk/util/lr.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
/*
* Created by LoginRadius Development Team
Copyright 2019 LoginRadius Inc. All rights reserved.
*/
var https = require('https');
var path = require('path');
* Copyright 2019 LoginRadius Inc. All rights reserved.
*/

const https = require('https');
const path = require('path');

module.exports = function (config = {}) {
// Validate required configuration values
if (config.apiKey === undefined || config.apiSecret === undefined) {
console.error('Please set apiKey API & apiSecret');
return;
throw new Error('Please set apiKey and apiSecret');
}

config.HELPER_PATH = path.join(__dirname, 'helper.js');
var helper = require(config.HELPER_PATH)(config);
// Set helper path
const HELPER_PATH = path.join(__dirname, 'helper.js');
const helper = require(HELPER_PATH)(config);

// Define request function
config.request = function (type, resourcePath, queryParameters, formData) {
var isApiSecret;
let isApiSecret;
if (queryParameters.apiSecret) {
isApiSecret = queryParameters.apiSecret;
delete queryParameters.apiSecret;
Expand All @@ -24,7 +28,7 @@ module.exports = function (config = {}) {
queryParameters.region = config.serverRegion;
}

var headers = { 'Content-Type': 'application/json' };
let headers = { 'Content-Type': 'application/json' };

if (queryParameters.sott) {
Object.assign(headers, { 'X-LoginRadius-Sott': queryParameters.sott });
Expand All @@ -33,26 +37,27 @@ module.exports = function (config = {}) {
if (!helper.isNullOrWhiteSpace(config.originIp)) {
Object.assign(headers, { 'X-Origin-IP': config.originIp });
}
var queryString = helper.getQueryString(queryParameters);
const queryString = helper.getQueryString(queryParameters);

if (queryParameters.access_token) {
Object.assign(headers, {
authorization: 'Bearer ' + queryParameters.access_token
authorization: 'Bearer ' + queryParameters.access_token,
});
delete queryParameters.access_token;
}
var options = {

let options = {
method: type,
hostname:
resourcePath === 'ciam/appinfo'
? 'config.lrcontent.com'
: config.apiDomain,
path: '/' + resourcePath + (queryString ? '?' + queryString : ''),
headers: headers
headers: headers,
};

if (formData !== '' && formData !== null) {
var out_text = JSON.stringify(formData);
const out_text = JSON.stringify(formData);
Object.assign(headers, { 'Content-Length': out_text.length });
}

Expand All @@ -69,16 +74,15 @@ module.exports = function (config = {}) {
config.proxy.port;
}

var customHeader = {
const customHeader = {
'X-LoginRadius-apiKey': config.apiKey,
'X-LoginRadius-apiSecret': config.apiSecret
'X-LoginRadius-apiSecret': config.apiSecret,
};

if (config.fieldsParam && config.fieldsValue) {
var fieldsList;
let fieldsList;
if (options.path.match(/\?./)) {
fieldsList =
config.fieldsParam + encodeURIComponent(config.fieldsValue);
fieldsList = config.fieldsParam + encodeURIComponent(config.fieldsValue);
} else {
fieldsList = '?fields=' + encodeURIComponent(config.fieldsValue);
}
Expand All @@ -90,7 +94,7 @@ module.exports = function (config = {}) {
if (!options.path.match('apiKey')) {
options.path += '&apiKey=' + encodeURIComponent(config.apiKey);
}
var signingHeader = helper.generateSigningHeader(
const signingHeader = helper.generateSigningHeader(
options,
config.apiSecret
);
Expand All @@ -100,43 +104,35 @@ module.exports = function (config = {}) {
Object.assign(options.headers, customHeader);
}
}

return new Promise(function (resolve, reject) {
const req = https
.request(options, (resp) => {
var data = '';
let data = '';

if (
Object.prototype.hasOwnProperty.call(resp, 'statusCode') &&
resp.statusCode === 429
) {
var jsondata = {
Description: 'Too many request in particular time frame',
const jsondata = {
Description: 'Too many requests in a particular time frame',
ErrorCode: 429,
Message: 'Too many request in particular time frame',
Message: 'Too many requests in a particular time frame',
IsProviderError: false,
ProviderErrorResponse: null
ProviderErrorResponse: null,
};
helper.manageRequestResponse(
'serverError',
jsondata,
resolve,
reject
);
helper.manageRequestResponse('serverError', jsondata, resolve, reject);
} else {
resp.on('data', (chunk) => {
data += chunk;
});

resp.on('end', () => {
try {
var response = JSON.parse(data);
const response = JSON.parse(data);
helper.manageRequestResponse('', response, resolve, reject);
} catch (err) {
helper.manageRequestResponse(
'serverError',
'',
resolve,
reject
);
helper.manageRequestResponse('serverError', '', resolve, reject);
}
});
}
Expand All @@ -145,137 +141,50 @@ module.exports = function (config = {}) {
helper.manageRequestResponse('serverError', error, resolve, reject);
});

if (out_text) {
req.write(out_text);
if (formData) {
req.write(formData);
}

req.end();
});
};

config.apiDomain =
config.apiDomain && config.apiDomain !== ''
? config.apiDomain
: 'api.loginradius.com';
// Set default apiDomain if not provided
config.apiDomain = config.apiDomain && config.apiDomain !== '' ? config.apiDomain : 'api.loginradius.com';

return {
helper,
accountApi: require(path.join(
__dirname,
'..',
'api',
'account',
'accountApi'
))(config),
roleApi: require(path.join(__dirname, '..', 'api', 'account', 'roleApi'))(
config
),
sottApi: require(path.join(__dirname, '..', 'api', 'account', 'sottApi'))(
config
),
configurationApi: require(path.join(
__dirname,
'..',
'api',
'advanced',
'configurationApi'
))(config),
customObjectApi: require(path.join(
__dirname,
'..',
'api',
'advanced',
'customObjectApi'
))(config),

// Group related APIs together for better organization
accountApi: require(path.join(__dirname, '..', 'api', 'account', 'accountApi'))(config),
roleApi: require(path.join(__dirname, '..', 'api', 'account', 'roleApi'))(config),
sottApi: require(path.join(__dirname, '..', 'api', 'account', 'sottApi'))(config),
configurationApi: require(path.join(__dirname, '..', 'api', 'advanced', 'configurationApi'))(config),
customObjectApi: require(path.join(__dirname, '..', 'api', 'advanced', 'customObjectApi'))(config),
multiFactorAuthenticationApi: require(path.join(
__dirname,
'..',
'api',
'advanced',
'multiFactorAuthenticationApi'
))(config),
webHookApi: require(path.join(
__dirname,
'..',
'api',
'advanced',
'webHookApi'
))(config),
consentManagementApi: require(path.join(
__dirname,
'..',
'api',
'advanced',
'consentManagementApi'
))(config),
reAuthenticationApi: require(path.join(
__dirname,
'..',
'api',
'advanced',
'reAuthenticationApi'
))(config),
authenticationApi: require(path.join(
__dirname,
'..',
'api',
'authentication',
'authenticationApi'
))(config),
oneTouchLoginApi: require(path.join(
__dirname,
'..',
'api',
'authentication',
'oneTouchLoginApi'
))(config),
passwordLessLoginApi: require(path.join(
__dirname,
'..',
'api',
'authentication',
'passwordLessLoginApi'
))(config),
phoneAuthenticationApi: require(path.join(
__dirname,
'..',
'api',
'authentication',
'phoneAuthenticationApi'
))(config),
webHookApi: require(path.join(__dirname, '..', 'api', 'advanced', 'webHookApi'))(config),
consentManagementApi: require(path.join(__dirname, '..', 'api', 'advanced', 'consentManagementApi'))(config),
reAuthenticationApi: require(path.join(__dirname, '..', 'api', 'advanced', 'reAuthenticationApi'))(config),
authenticationApi: require(path.join(__dirname, '..', 'api', 'authentication', 'authenticationApi'))(config),
oneTouchLoginApi: require(path.join(__dirname, '..', 'api', 'authentication', 'oneTouchLoginApi'))(config),
passwordLessLoginApi: require(path.join(__dirname, '..', 'api', 'authentication', 'passwordLessLoginApi'))(config),
phoneAuthenticationApi: require(path.join(__dirname, '..', 'api', 'authentication', 'phoneAuthenticationApi'))(config),
riskBasedAuthenticationApi: require(path.join(
__dirname,
'..',
'api',
'authentication',
'riskBasedAuthenticationApi'
))(config),
pinAuthenticationApi: require(path.join(
__dirname,
'..',
'api',
'authentication',
'pinAuthenticationApi'
))(config),
smartLoginApi: require(path.join(
__dirname,
'..',
'api',
'authentication',
'smartLoginApi'
))(config),
nativeSocialApi: require(path.join(
__dirname,
'..',
'api',
'social',
'nativeSocialApi'
))(config),
socialApi: require(path.join(
__dirname,
'..',
'api',
'social',
'socialApi'
))(config)
pinAuthenticationApi: require(path.join(__dirname, '..', 'api', 'authentication', 'pinAuthenticationApi'))(config),
smartLoginApi: require(path.join(__dirname, '..', 'api', 'authentication', 'smartLoginApi'))(config),
nativeSocialApi: require(path.join(__dirname, '..', 'api', 'social', 'nativeSocialApi'))(config),
socialApi: require(path.join(__dirname, '..', 'api', 'social', 'socialApi'))(config),
};
};