mirror of
https://github.com/n8n-io/n8n.git
synced 2025-03-05 20:50:17 -08:00
✨ Allow to set HTTP response code on Webhook-Node
This commit is contained in:
parent
1ff038b563
commit
1ff456d77c
|
@ -304,6 +304,7 @@ export interface IPushDataTestWebhook {
|
||||||
export interface IResponseCallbackData {
|
export interface IResponseCallbackData {
|
||||||
data?: IDataObject | IDataObject[];
|
data?: IDataObject | IDataObject[];
|
||||||
noWebhookResponse?: boolean;
|
noWebhookResponse?: boolean;
|
||||||
|
responseCode?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -53,9 +53,13 @@ export function basicAuthAuthorizationError(resp: Response, realm: string, messa
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export function sendSuccessResponse(res: Response, data: any, raw?: boolean) { // tslint:disable-line:no-any
|
export function sendSuccessResponse(res: Response, data: any, raw?: boolean, responseCode?: number) { // tslint:disable-line:no-any
|
||||||
res.setHeader('Content-Type', 'application/json');
|
res.setHeader('Content-Type', 'application/json');
|
||||||
|
|
||||||
|
if (responseCode !== undefined) {
|
||||||
|
res.status(responseCode);
|
||||||
|
}
|
||||||
|
|
||||||
if (raw === true) {
|
if (raw === true) {
|
||||||
res.send(JSON.stringify(data));
|
res.send(JSON.stringify(data));
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1019,7 +1019,7 @@ class App {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ResponseHelper.sendSuccessResponse(res, response.data, true);
|
ResponseHelper.sendSuccessResponse(res, response.data, true, response.responseCode);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -1043,7 +1043,7 @@ class App {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ResponseHelper.sendSuccessResponse(res, response.data, true);
|
ResponseHelper.sendSuccessResponse(res, response.data, true, response.responseCode);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -1067,7 +1067,7 @@ class App {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ResponseHelper.sendSuccessResponse(res, response.data, true);
|
ResponseHelper.sendSuccessResponse(res, response.data, true, response.responseCode);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -1091,7 +1091,7 @@ class App {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ResponseHelper.sendSuccessResponse(res, response.data, true);
|
ResponseHelper.sendSuccessResponse(res, response.data, true, response.responseCode);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -115,6 +115,7 @@ export function getWorkflowWebhooks(workflow: Workflow, additionalData: IWorkflo
|
||||||
|
|
||||||
// Get the responseMode
|
// Get the responseMode
|
||||||
const reponseMode = webhookData.workflow.getSimpleParameterValue(workflowStartNode, webhookData.webhookDescription['reponseMode'], 'onReceived');
|
const reponseMode = webhookData.workflow.getSimpleParameterValue(workflowStartNode, webhookData.webhookDescription['reponseMode'], 'onReceived');
|
||||||
|
const responseCode = webhookData.workflow.getSimpleParameterValue(workflowStartNode, webhookData.webhookDescription['responseCode'], 200);
|
||||||
|
|
||||||
if (!['onReceived', 'lastNode'].includes(reponseMode as string)) {
|
if (!['onReceived', 'lastNode'].includes(reponseMode as string)) {
|
||||||
// If the mode is not known we error. Is probably best like that instead of using
|
// If the mode is not known we error. Is probably best like that instead of using
|
||||||
|
@ -152,7 +153,8 @@ export function getWorkflowWebhooks(workflow: Workflow, additionalData: IWorkflo
|
||||||
if (webhookResultData.webhookResponse !== undefined) {
|
if (webhookResultData.webhookResponse !== undefined) {
|
||||||
// Data to respond with is given
|
// Data to respond with is given
|
||||||
responseCallback(null, {
|
responseCallback(null, {
|
||||||
data: webhookResultData.webhookResponse
|
data: webhookResultData.webhookResponse,
|
||||||
|
responseCode,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// Send default response
|
// Send default response
|
||||||
|
@ -160,6 +162,7 @@ export function getWorkflowWebhooks(workflow: Workflow, additionalData: IWorkflo
|
||||||
data: {
|
data: {
|
||||||
message: 'Webhook call got received.',
|
message: 'Webhook call got received.',
|
||||||
},
|
},
|
||||||
|
responseCode,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -173,12 +176,16 @@ export function getWorkflowWebhooks(workflow: Workflow, additionalData: IWorkflo
|
||||||
// Data to respond with is given
|
// Data to respond with is given
|
||||||
responseCallback(null, {
|
responseCallback(null, {
|
||||||
data: webhookResultData.webhookResponse,
|
data: webhookResultData.webhookResponse,
|
||||||
|
responseCode,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
console.log('k1: ' + responseCode);
|
||||||
|
|
||||||
responseCallback(null, {
|
responseCallback(null, {
|
||||||
data: {
|
data: {
|
||||||
message: 'Workflow got started.',
|
message: 'Workflow got started.',
|
||||||
}
|
},
|
||||||
|
responseCode,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,7 +236,8 @@ export function getWorkflowWebhooks(workflow: Workflow, additionalData: IWorkflo
|
||||||
responseCallback(null, {
|
responseCallback(null, {
|
||||||
data: {
|
data: {
|
||||||
message: 'Workflow did execute sucessfully but no data got returned.',
|
message: 'Workflow did execute sucessfully but no data got returned.',
|
||||||
}
|
},
|
||||||
|
responseCode,
|
||||||
});
|
});
|
||||||
didSendResponse = true;
|
didSendResponse = true;
|
||||||
}
|
}
|
||||||
|
@ -242,7 +250,8 @@ export function getWorkflowWebhooks(workflow: Workflow, additionalData: IWorkflo
|
||||||
responseCallback(null, {
|
responseCallback(null, {
|
||||||
data: {
|
data: {
|
||||||
message: 'Workflow did execute sucessfully but the last node did not return any data.',
|
message: 'Workflow did execute sucessfully but the last node did not return any data.',
|
||||||
}
|
},
|
||||||
|
responseCode,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
didSendResponse = true;
|
didSendResponse = true;
|
||||||
|
@ -302,6 +311,7 @@ export function getWorkflowWebhooks(workflow: Workflow, additionalData: IWorkflo
|
||||||
|
|
||||||
responseCallback(null, {
|
responseCallback(null, {
|
||||||
data,
|
data,
|
||||||
|
responseCode,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
didSendResponse = true;
|
didSendResponse = true;
|
||||||
|
|
|
@ -71,6 +71,7 @@ export class Webhook implements INodeType {
|
||||||
{
|
{
|
||||||
name: 'default',
|
name: 'default',
|
||||||
httpMethod: '={{$parameter["httpMethod"]}}',
|
httpMethod: '={{$parameter["httpMethod"]}}',
|
||||||
|
responseCode: '={{$parameter["responseCode"]}}',
|
||||||
reponseMode: '={{$parameter["reponseMode"]}}',
|
reponseMode: '={{$parameter["reponseMode"]}}',
|
||||||
reponseData: '={{$parameter["reponseData"]}}',
|
reponseData: '={{$parameter["reponseData"]}}',
|
||||||
responseBinaryPropertyName: '={{$parameter["responseBinaryPropertyName"]}}',
|
responseBinaryPropertyName: '={{$parameter["responseBinaryPropertyName"]}}',
|
||||||
|
@ -122,10 +123,21 @@ export class Webhook implements INodeType {
|
||||||
name: 'path',
|
name: 'path',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
default: '',
|
default: '',
|
||||||
placeholder: '',
|
placeholder: 'webhook',
|
||||||
required: true,
|
required: true,
|
||||||
description: 'The path to listen to',
|
description: 'The path to listen to',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Response Code',
|
||||||
|
name: 'responseCode',
|
||||||
|
type: 'number',
|
||||||
|
typeOptions: {
|
||||||
|
minValue: 100,
|
||||||
|
maxValue: 599,
|
||||||
|
},
|
||||||
|
default: 200,
|
||||||
|
description: 'The HTTP Response code to return',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
displayName: 'Reponse Mode',
|
displayName: 'Reponse Mode',
|
||||||
name: 'reponseMode',
|
name: 'reponseMode',
|
||||||
|
@ -134,7 +146,7 @@ export class Webhook implements INodeType {
|
||||||
{
|
{
|
||||||
name: 'On Received',
|
name: 'On Received',
|
||||||
value: 'onReceived',
|
value: 'onReceived',
|
||||||
description: 'Returns directly with Reponse Code 200',
|
description: 'Returns directly with defined Response Code',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Last Node',
|
name: 'Last Node',
|
||||||
|
|
Loading…
Reference in a new issue