n8cn / packages /cli /src /errors /response-errors /webhook-not-found.error.ts
gallyga's picture
Add n8n Chinese version
aec3094
import { NotFoundError } from './not-found.error';
export const webhookNotFoundErrorMessage = ({
path,
httpMethod,
webhookMethods,
}: {
path: string;
httpMethod?: string;
webhookMethods?: string[];
}) => {
let webhookPath = path;
if (httpMethod) {
webhookPath = `${httpMethod} ${webhookPath}`;
}
if (webhookMethods?.length && httpMethod) {
let methods = '';
if (webhookMethods.length === 1) {
methods = webhookMethods[0];
} else {
const lastMethod = webhookMethods.pop();
methods = `${webhookMethods.join(', ')} or ${lastMethod as string}`;
}
return `This webhook is not registered for ${httpMethod} requests. Did you mean to make a ${methods} request?`;
} else {
return `The requested webhook "${webhookPath}" is not registered.`;
}
};
export class WebhookNotFoundError extends NotFoundError {
constructor(
{
path,
httpMethod,
webhookMethods,
}: {
path: string;
httpMethod?: string;
webhookMethods?: string[];
},
{ hint }: { hint: 'default' | 'production' } = { hint: 'default' },
) {
const errorMsg = webhookNotFoundErrorMessage({ path, httpMethod, webhookMethods });
let hintMsg = '';
if (!webhookMethods?.length) {
hintMsg =
hint === 'default'
? "Click the 'Execute workflow' button on the canvas, then try again. (In test mode, the webhook only works for one call after you click this button)"
: "The workflow must be active for a production URL to run successfully. You can activate the workflow using the toggle in the top-right of the editor. Note that unlike test URL calls, production URL calls aren't shown on the canvas (only in the executions list)";
}
super(errorMsg, hintMsg);
}
}