@sap/cli-core
Version:
Command-Line Interface (CLI) Core Module
35 lines (34 loc) • 2.49 kB
JavaScript
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);