Files
formbricks/apps/web/modules/integrations/webhooks/lib/utils.ts
Kartik Saini 9152181a00 fix: discord webhook not pinging (#4673)
Co-authored-by: Piyush Gupta <piyushguptaa2z123@gmail.com>
Co-authored-by: Dhruwang <dhruwangjariwala18@gmail.com>
Co-authored-by: Dhruwang Jariwala <67850763+Dhruwang@users.noreply.github.com>
2025-02-14 03:56:19 +00:00

44 lines
1.2 KiB
TypeScript

export const validWebHookURL = (urlInput: string) => {
const trimmedInput = urlInput.trim();
if (!trimmedInput) {
return { valid: false, error: "Please enter a URL" };
}
try {
const url = new URL(trimmedInput);
if (url.protocol !== "https:") {
return { valid: false, error: "URL must start with https://" };
}
const domainError: string =
"Please enter a complete URL with a valid domain (e.g., https://formbricks.com)";
const multipleSlashesPattern = /(?<!:)\/\/+/;
if (multipleSlashesPattern.test(trimmedInput)) {
return {
valid: false,
error: domainError,
};
}
const validDomainPattern = /^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
if (!validDomainPattern.test(url.hostname)) {
return {
valid: false,
error: domainError,
};
}
return { valid: true };
} catch (error) {
return { valid: false, error: "Invalid URL format. Please enter a complete URL including https://" };
}
};
export const isDiscordWebhook = (urlString: string) => {
const url = new URL(urlString);
const DISCORD_WEBHOOK_URL_PATTERN = /^https:\/\/discord\.com\/api\/webhooks\/\d+\/.+$/;
return DISCORD_WEBHOOK_URL_PATTERN.test(url.toString());
};