From e1e0c5f79968a4eda58b08bfa85529e0d003b071 Mon Sep 17 00:00:00 2001 From: Dragan Filipovic Date: Thu, 9 Sep 2021 22:15:17 +0200 Subject: [PATCH] #8 use aio-lib-core-config for token data --- package-lock.json | 39 ++++++++++++++++++++++++++++----------- package.json | 1 + src/utils/auth.js | 33 ++++++++++++++------------------- 3 files changed, 43 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f4ec99..70221cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,25 @@ "qs": "^6.8.0" } }, + "@adobe/aio-lib-core-config": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@adobe/aio-lib-core-config/-/aio-lib-core-config-2.0.1.tgz", + "integrity": "sha512-wr2S2c5vAytYO7A8SgYJxuLHHTghntnOok0CShrI04gisXcurJq/nteonFq7kDBVhLnMKFfkUyenLA1GBw2DUw==", + "requires": { + "debug": "^4.1.1", + "deepmerge": "^4.0.0", + "dotenv": "8.2.0", + "hjson": "^3.1.2", + "js-yaml": "^3.13.0" + }, + "dependencies": { + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + } + } + }, "@adobe/eslint-config-aio-lib-config": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@adobe/eslint-config-aio-lib-config/-/eslint-config-aio-lib-config-1.2.1.tgz", @@ -1285,7 +1304,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -1900,7 +1918,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, "requires": { "ms": "2.1.2" }, @@ -1908,8 +1925,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -1940,8 +1956,7 @@ "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" }, "define-properties": { "version": "1.1.3", @@ -2424,8 +2439,7 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { "version": "1.4.0", @@ -2835,6 +2849,11 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" }, + "hjson": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/hjson/-/hjson-3.2.2.tgz", + "integrity": "sha512-MkUeB0cTIlppeSsndgESkfFD21T2nXPRaBStLtf3cAYA2bVEFdXlodZB0TukwZiobPD1Ksax5DK4RTZeaXCI3Q==" + }, "hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -4613,7 +4632,6 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -5809,8 +5827,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "stack-utils": { "version": "2.0.3", diff --git a/package.json b/package.json index 6bf1b51..ff20f86 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "dependencies": { "@adobe/aem-headless-client-js": "^3.0.0", "@adobe/aemcs-api-client-lib": "git+https://github.com/adobe/aemcs-api-client-lib.git#main", + "@adobe/aio-lib-core-config": "^2.0.1", "cross-fetch": "^3.0.6" }, "deprecated": false, diff --git a/src/utils/auth.js b/src/utils/auth.js index 543daea..bbdad81 100644 --- a/src/utils/auth.js +++ b/src/utils/auth.js @@ -9,46 +9,41 @@ OF ANY KIND, either express or implied. See the License for the specific languag governing permissions and limitations under the License. */ -const fs = require('fs') -const path = require('path') +const config = require('@adobe/aio-lib-core-config') const exchange = require('@adobe/aemcs-api-client-lib') const { SDKError } = require('./errors') /** * Returns a Promise that resolves with a credentials JSON data. * - * @param {string} credentialsFilePath - credentials config file path (serviceToken or devToken content) + * @param {string} aioConfigKey - aio config key * @returns {Promise} the response body wrapped inside a Promise */ -async function getToken (credentialsFilePath) { - let authFileContent = '' +async function getToken (aioConfigKey) { + const configString = config.get(aioConfigKey) - try { - const filePath = path.isAbsolute(credentialsFilePath) ? credentialsFilePath : path.join(process.cwd(), credentialsFilePath) - authFileContent = fs.readFileSync(filePath, 'utf8') - } catch (error) { - const { name, message, details } = error - throw new SDKError(name, 'readFileSync', '', message, details) + if (!configString) { + console.log('config not found') + return } - let config = null + let serviceToken = null try { - config = JSON.parse(authFileContent) + serviceToken = JSON.parse(configString) } catch (error) { - const { name, message, details } = error - throw new SDKError(name, 'JSON.parse', '', message, details) + console.log('not parsed') } - if (config.accessToken) { - // If config has DEV token + if (!serviceToken) { + // Treat config as a DEV token return { - accessToken: config.accessToken, + accessToken: configString, type: 'Bearer', expires: 24 * 60 * 60 * 1000 } } - return exchange(config) + return exchange(serviceToken) .then(data => { return { accessToken: data.access_token,