in apps/vs-code-designer/src/app/utils/codeless/connection.ts [222:323]
export async function getConnectionsAndSettingsToUpdate(
context: IActionContext,
projectPath: string,
connectionReferences: any,
azureTenantId: string,
workflowBaseManagementUri: string,
parametersFromDefinition: any
): Promise<ConnectionAndSettings> {
const connectionsDataString = projectPath ? await getConnectionsJson(projectPath) : '';
const connectionsData = connectionsDataString === '' ? {} : JSON.parse(connectionsDataString);
const localSettingsPath: string = path.join(projectPath, localSettingsFileName);
const localSettings: ILocalSettingsJson = await getLocalSettingsJson(context, localSettingsPath);
let areKeysRefreshed = false;
let areKeysGenerated = false;
const referencesToAdd = connectionsData.managedApiConnections || {};
const settingsToAdd: Record<string, string> = {};
const jwtTokenHelper: JwtTokenHelper = JwtTokenHelper.createInstance();
let accessToken: string | undefined;
const parameterizeConnectionsSetting = getGlobalSetting(parameterizeConnectionsInProjectLoadSetting);
for (const referenceKey of Object.keys(connectionReferences)) {
const reference = connectionReferences[referenceKey];
context.telemetry.properties.checkingConnectionKey = `Checking ${referenceKey}-connectionKey validity`;
if (isApiHubConnectionId(reference.connection.id) && !referencesToAdd[referenceKey]) {
accessToken = accessToken ? accessToken : await getAuthorizationToken(azureTenantId);
referencesToAdd[referenceKey] = await getConnectionReference(
context,
referenceKey,
reference,
accessToken,
workflowBaseManagementUri,
settingsToAdd,
parametersFromDefinition,
parameterizeConnectionsSetting
);
context.telemetry.properties.connectionKeyGenerated = `${referenceKey}-connectionKey generated and is valid for 7 days`;
areKeysGenerated = true;
} else if (isApiHubConnectionId(reference.connection.id) && !localSettings.Values[`${referenceKey}-connectionKey`]) {
const resolvedConnectionReference = resolveConnectionsReferences(JSON.stringify(reference), undefined, localSettings.Values);
accessToken = accessToken ? accessToken : await getAuthorizationToken(azureTenantId);
// call api to get connection key but will not modify connections file
await getConnectionReference(
context,
referenceKey,
resolvedConnectionReference,
accessToken,
workflowBaseManagementUri,
settingsToAdd,
parametersFromDefinition,
parameterizeConnectionsSetting
);
context.telemetry.properties.connectionKeyGenerated = `${referenceKey}-connectionKey generated and is valid for 7 days`;
areKeysGenerated = true;
} else if (
isApiHubConnectionId(reference.connection.id) &&
localSettings.Values[`${referenceKey}-connectionKey`] &&
isKeyExpired(jwtTokenHelper, Date.now(), localSettings.Values[`${referenceKey}-connectionKey`], 3)
) {
const resolvedConnectionReference = resolveConnectionsReferences(JSON.stringify(reference), undefined, localSettings.Values);
accessToken = accessToken ? accessToken : await getAuthorizationToken(azureTenantId);
// call api to get connection key but will not modify connections file
await getConnectionReference(
context,
referenceKey,
resolvedConnectionReference,
accessToken,
workflowBaseManagementUri,
settingsToAdd,
parametersFromDefinition,
parameterizeConnectionsSetting
);
context.telemetry.properties.connectionKeyRegenerate = `${referenceKey}-connectionKey regenerated and is valid for 7 days`;
areKeysRefreshed = true;
} else {
context.telemetry.properties.connectionKeyValid = `${referenceKey}-connectionKey exists and is valid`;
}
}
connectionsData.managedApiConnections = referencesToAdd;
if (areKeysRefreshed) {
window.showInformationMessage(localize('connectionKeysRefreshed', 'Connection keys have been refreshed and are valid for 7 days.'));
}
if (areKeysGenerated) {
window.showInformationMessage(localize('connectionKeysGenerated', 'New connection keys have been generated and are valid for 7 days.'));
}
return {
connections: connectionsData,
settings: settingsToAdd,
};
}