UNPKG

@sap/cli-core

Version:

Command-Line Interface (CLI) Core Module

35 lines (34 loc) 2.49 kB
import { create as createNextHandler } from "../../../next.js"; import { create as createOrHandler } from "../../../or.js"; import { create as createOptionsHandler } from "../../../options/index.js"; import { create as createCheckOptionsExistenceHandler } from "../../../checkOptionsExistence.js"; import { OPTION_ACCESS_TOKEN, OPTION_AUTHORIZATION_FLOW, OPTION_AUTHORIZATION_URL, OPTION_CLIENT_ID, OPTION_CLIENT_SECRET, OPTION_EXPIRES_IN, OPTION_REFRESH_TOKEN, OPTION_TOKEN_URL, } from "../../../../../constants.js"; import { get } from "../../../../../logger/index.js"; import { getOptionValueFromConfigGracefully } from "../../../../../utils/options.js"; import { SecretsStorageSingleton } from "../../../../../cache/secrets/SecretsStorageSingleton.js"; const createOptHandler = (option) => createOptionsHandler([option], undefined, true, true); const getLogger = () => get("commands.handler.authentication.oauth.secretsProvider.options"); const setOAuthFromOptions = async () => async () => { const expiresIn = getOptionValueFromConfigGracefully(OPTION_EXPIRES_IN); await SecretsStorageSingleton.SINGLETON.storeSecret({ client_id: getOptionValueFromConfigGracefully(OPTION_CLIENT_ID), client_secret: getOptionValueFromConfigGracefully(OPTION_CLIENT_SECRET), authorization_url: getOptionValueFromConfigGracefully(OPTION_AUTHORIZATION_URL), token_url: getOptionValueFromConfigGracefully(OPTION_TOKEN_URL), access_token: getOptionValueFromConfigGracefully(OPTION_ACCESS_TOKEN), refresh_token: getOptionValueFromConfigGracefully(OPTION_REFRESH_TOKEN), authorization_flow: getOptionValueFromConfigGracefully(OPTION_AUTHORIZATION_FLOW), expires_in: expiresIn ? parseInt(expiresIn, 10) : undefined, }); }; const pre = async () => async () => { const { info } = getLogger(); info("reading secrets from options"); }; export const create = () => createNextHandler("handler.authentication.oauth.secretsProvider.options$outer", pre, createOrHandler("commands.handler.authentication.oauth.secretsProvider.options", createCheckOptionsExistenceHandler(OPTION_ACCESS_TOKEN, false), createNextHandler("handler.authentication.oauth.secretsProvider.options$inner", createOptHandler(OPTION_CLIENT_ID), createOptHandler(OPTION_CLIENT_SECRET), createOptionsHandler([ OPTION_AUTHORIZATION_URL, OPTION_TOKEN_URL, OPTION_REFRESH_TOKEN, OPTION_EXPIRES_IN, OPTION_AUTHORIZATION_FLOW, ]))), setOAuthFromOptions);