Skip to content

Commit

Permalink
refactor(core): Avoid passing around static state like default timezo…
Browse files Browse the repository at this point in the history
…ne (no-changelog) (n8n-io#7221)
  • Loading branch information
netroy authored Oct 27, 2023
1 parent 62c0967 commit 35bb42c
Show file tree
Hide file tree
Showing 31 changed files with 76 additions and 224 deletions.
4 changes: 0 additions & 4 deletions packages/cli/src/AbstractServer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ export abstract class AbstractServer {

protected sslCert: string;

protected timezone: string;

protected restEndpoint: string;

protected endpointWebhook: string;
Expand All @@ -61,8 +59,6 @@ export abstract class AbstractServer {
this.sslKey = config.getEnv('ssl_key');
this.sslCert = config.getEnv('ssl_cert');

this.timezone = config.getEnv('generic.timezone');

this.restEndpoint = config.getEnv('endpoints.rest');
this.endpointWebhook = config.getEnv('endpoints.webhook');
this.endpointWebhookTest = config.getEnv('endpoints.webhookTest');
Expand Down
20 changes: 1 addition & 19 deletions packages/cli/src/CredentialsHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,6 @@ export class CredentialsHelper extends ICredentialsHelper {
incomingRequestOptions: IHttpRequestOptions | IRequestOptionsSimplified,
workflow: Workflow,
node: INode,
defaultTimezone: string,
): Promise<IHttpRequestOptions> {
const requestOptions = incomingRequestOptions;
const credentialType = this.credentialTypes.getByName(typeName);
Expand All @@ -131,20 +130,13 @@ export class CredentialsHelper extends ICredentialsHelper {
if (authenticate.type === 'generic') {
Object.entries(authenticate.properties).forEach(([outerKey, outerValue]) => {
Object.entries(outerValue).forEach(([key, value]) => {
keyResolved = this.resolveValue(
key,
{ $credentials: credentials },
workflow,
node,
defaultTimezone,
);
keyResolved = this.resolveValue(key, { $credentials: credentials }, workflow, node);

valueResolved = this.resolveValue(
value as string,
{ $credentials: credentials },
workflow,
node,
defaultTimezone,
);

// @ts-ignore
Expand Down Expand Up @@ -226,7 +218,6 @@ export class CredentialsHelper extends ICredentialsHelper {
additionalKeys: IWorkflowDataProxyAdditionalKeys,
workflow: Workflow,
node: INode,
defaultTimezone: string,
): string {
if (typeof parameterValue !== 'string' || parameterValue.charAt(0) !== '=') {
return parameterValue;
Expand All @@ -236,7 +227,6 @@ export class CredentialsHelper extends ICredentialsHelper {
node,
parameterValue,
'internal',
defaultTimezone,
additionalKeys,
undefined,
'',
Expand Down Expand Up @@ -347,7 +337,6 @@ export class CredentialsHelper extends ICredentialsHelper {
nodeCredentials: INodeCredentialsDetails,
type: string,
mode: WorkflowExecuteMode,
defaultTimezone: string,
raw?: boolean,
expressionResolveValues?: ICredentialsExpressionResolveValues,
): Promise<ICredentialDataDecryptedObject> {
Expand All @@ -367,7 +356,6 @@ export class CredentialsHelper extends ICredentialsHelper {
decryptedDataOriginal,
type,
mode,
defaultTimezone,
expressionResolveValues,
canUseSecrets,
);
Expand All @@ -381,7 +369,6 @@ export class CredentialsHelper extends ICredentialsHelper {
decryptedDataOriginal: ICredentialDataDecryptedObject,
type: string,
mode: WorkflowExecuteMode,
defaultTimezone: string,
expressionResolveValues?: ICredentialsExpressionResolveValues,
canUseSecrets?: boolean,
): ICredentialDataDecryptedObject {
Expand Down Expand Up @@ -413,8 +400,6 @@ export class CredentialsHelper extends ICredentialsHelper {
});

if (expressionResolveValues) {
const timezone = expressionResolveValues.workflow.settings.timezone ?? defaultTimezone;

try {
decryptedData = expressionResolveValues.workflow.expression.getParameterValue(
decryptedData as INodeParameters,
Expand All @@ -424,7 +409,6 @@ export class CredentialsHelper extends ICredentialsHelper {
expressionResolveValues.node.name,
expressionResolveValues.connectionInputData,
mode,
timezone,
additionalKeys,
undefined,
false,
Expand All @@ -447,7 +431,6 @@ export class CredentialsHelper extends ICredentialsHelper {
mockNode,
decryptedData as INodeParameters,
mode,
defaultTimezone,
additionalKeys,
undefined,
undefined,
Expand Down Expand Up @@ -597,7 +580,6 @@ export class CredentialsHelper extends ICredentialsHelper {
credentialsDecrypted.data,
credentialType,
'internal' as WorkflowExecuteMode,
additionalData.timezone,
undefined,
user.isOwner,
);
Expand Down
6 changes: 0 additions & 6 deletions packages/cli/src/Server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -727,14 +727,12 @@ export class Server extends AbstractServer {
const additionalData = await WorkflowExecuteAdditionalData.getBase(req.user.id);

const mode: WorkflowExecuteMode = 'internal';
const timezone = config.getEnv('generic.timezone');
const credentialsHelper = Container.get(CredentialsHelper);
const decryptedDataOriginal = await credentialsHelper.getDecrypted(
additionalData,
credential as INodeCredentialsDetails,
credential.type,
mode,
timezone,
true,
);

Expand All @@ -743,7 +741,6 @@ export class Server extends AbstractServer {
decryptedDataOriginal,
credential.type,
mode,
timezone,
);

const signatureMethod = oauthCredentials.signatureMethod as string;
Expand Down Expand Up @@ -870,22 +867,19 @@ export class Server extends AbstractServer {
const additionalData = await WorkflowExecuteAdditionalData.getBase(req.user.id);

const mode: WorkflowExecuteMode = 'internal';
const timezone = config.getEnv('generic.timezone');
const credentialsHelper = Container.get(CredentialsHelper);
const decryptedDataOriginal = await credentialsHelper.getDecrypted(
additionalData,
credential as INodeCredentialsDetails,
credential.type,
mode,
timezone,
true,
);
const oauthCredentials = credentialsHelper.applyDefaultsAndOverwrites(
additionalData,
decryptedDataOriginal,
credential.type,
mode,
timezone,
);

const options: AxiosRequestConfig = {
Expand Down
8 changes: 0 additions & 8 deletions packages/cli/src/WebhookHelpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,6 @@ export async function executeWebhook(
workflowStartNode,
webhookData.webhookDescription.responseMode,
executionMode,
additionalData.timezone,
additionalKeys,
undefined,
'onReceived',
Expand All @@ -255,7 +254,6 @@ export async function executeWebhook(
workflowStartNode,
webhookData.webhookDescription.responseCode,
executionMode,
additionalData.timezone,
additionalKeys,
undefined,
200,
Expand All @@ -265,7 +263,6 @@ export async function executeWebhook(
workflowStartNode,
webhookData.webhookDescription.responseData,
executionMode,
additionalData.timezone,
additionalKeys,
undefined,
'firstEntryJson',
Expand All @@ -288,7 +285,6 @@ export async function executeWebhook(
workflowStartNode,
'={{$parameter["options"]["binaryData"]}}',
executionMode,
additionalData.timezone,
additionalKeys,
undefined,
false,
Expand Down Expand Up @@ -370,7 +366,6 @@ export async function executeWebhook(
workflowStartNode,
webhookData.webhookDescription.responseHeaders,
executionMode,
additionalData.timezone,
additionalKeys,
undefined,
undefined,
Expand Down Expand Up @@ -644,7 +639,6 @@ export async function executeWebhook(
workflowStartNode,
webhookData.webhookDescription.responsePropertyName,
executionMode,
additionalData.timezone,
additionalKeys,
undefined,
undefined,
Expand All @@ -658,7 +652,6 @@ export async function executeWebhook(
workflowStartNode,
webhookData.webhookDescription.responseContentType,
executionMode,
additionalData.timezone,
additionalKeys,
undefined,
undefined,
Expand Down Expand Up @@ -704,7 +697,6 @@ export async function executeWebhook(
workflowStartNode,
webhookData.webhookDescription.responseBinaryPropertyName,
executionMode,
additionalData.timezone,
additionalKeys,
undefined,
'data',
Expand Down
3 changes: 0 additions & 3 deletions packages/cli/src/WorkflowExecuteAdditionalData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1006,7 +1006,6 @@ export function sendDataToUI(type: string, data: IDataObject | IDataObject[]) {

/**
* Returns the base additional data without webhooks
*
*/
export async function getBase(
userId: string,
Expand All @@ -1015,7 +1014,6 @@ export async function getBase(
): Promise<IWorkflowExecuteAdditionalData> {
const urlBaseWebhook = WebhookHelpers.getWebhookBaseUrl();

const timezone = config.getEnv('generic.timezone');
const webhookBaseUrl = urlBaseWebhook + config.getEnv('endpoints.webhook');
const webhookWaitingBaseUrl = urlBaseWebhook + config.getEnv('endpoints.webhookWaiting');
const webhookTestBaseUrl = urlBaseWebhook + config.getEnv('endpoints.webhookTest');
Expand All @@ -1026,7 +1024,6 @@ export async function getBase(
credentialsHelper: Container.get(CredentialsHelper),
executeWorkflow,
restApiUrl: urlBaseWebhook + config.getEnv('endpoints.rest'),
timezone,
instanceBaseUrl: urlBaseWebhook,
webhookBaseUrl,
webhookWaitingBaseUrl,
Expand Down
5 changes: 5 additions & 0 deletions packages/cli/src/config/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import dotenv from 'dotenv';
import { tmpdir } from 'os';
import { mkdirSync, mkdtempSync, readFileSync } from 'fs';
import { join } from 'path';
import { setGlobalState } from 'n8n-workflow';
import { schema } from './schema';
import { inTest, inE2ETests } from '@/constants';

Expand Down Expand Up @@ -73,6 +74,10 @@ config.validate({
allowed: 'strict',
});

setGlobalState({
defaultTimezone: config.getEnv('generic.timezone'),
});

// eslint-disable-next-line import/no-default-export
export default config;
export type Config = typeof config;
6 changes: 0 additions & 6 deletions packages/cli/src/credentials/oauth2Credential.api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,12 @@ oauth2CredentialController.get(
const credentialType = credential.type;

const mode: WorkflowExecuteMode = 'internal';
const timezone = config.getEnv('generic.timezone');
const credentialsHelper = Container.get(CredentialsHelper);
const decryptedDataOriginal = await credentialsHelper.getDecrypted(
additionalData,
credential as INodeCredentialsDetails,
credentialType,
mode,
timezone,
true,
);

Expand All @@ -93,7 +91,6 @@ oauth2CredentialController.get(
decryptedDataOriginal,
credentialType,
mode,
timezone,
);

const token = new Csrf();
Expand Down Expand Up @@ -208,22 +205,19 @@ oauth2CredentialController.get(
const additionalData = await WorkflowExecuteAdditionalData.getBase(state.cid);

const mode: WorkflowExecuteMode = 'internal';
const timezone = config.getEnv('generic.timezone');
const credentialsHelper = Container.get(CredentialsHelper);
const decryptedDataOriginal = await credentialsHelper.getDecrypted(
additionalData,
credential as INodeCredentialsDetails,
credential.type,
mode,
timezone,
true,
);
const oauthCredentials = credentialsHelper.applyDefaultsAndOverwrites(
additionalData,
decryptedDataOriginal,
credential.type,
mode,
timezone,
);

const token = new Csrf();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import type {
} from 'n8n-workflow';
import { CredentialsHelper } from '@/CredentialsHelper';
import { Agent as HTTPSAgent } from 'https';
import config from '@/config';
import { isLogStreamingEnabled } from '../MessageEventBus/MessageEventBusHelper';
import { eventMessageGenericDestinationTestEvent } from '../EventMessageClasses/EventMessageGeneric';
import { MessageEventBus } from '../MessageEventBus/MessageEventBus';
Expand Down Expand Up @@ -107,13 +106,11 @@ export class MessageEventBusDestinationWebhook
async matchDecryptedCredentialType(credentialType: string) {
const foundCredential = Object.entries(this.credentials).find((e) => e[0] === credentialType);
if (foundCredential) {
const timezone = config.getEnv('generic.timezone');
const credentialsDecrypted = await this.credentialsHelper?.getDecrypted(
{ secretsHelpers: SecretsHelpers } as unknown as IWorkflowExecuteAdditionalData,
foundCredential[1],
foundCredential[0],
'internal',
timezone,
true,
);
return credentialsDecrypted;
Expand Down
3 changes: 0 additions & 3 deletions packages/cli/test/unit/CredentialsHelper.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -267,8 +267,6 @@ describe('CredentialsHelper', () => {
nodeTypes,
});

const timezone = 'America/New_York';

for (const testData of tests) {
test(testData.description, async () => {
mockNodesAndCredentials.loadedCredentials = {
Expand All @@ -286,7 +284,6 @@ describe('CredentialsHelper', () => {
deepCopy(incomingRequestOptions),
workflow,
node,
timezone,
);

expect(result).toEqual(testData.output);
Expand Down
Loading

0 comments on commit 35bb42c

Please sign in to comment.