refactor(plugin-sdk): add shared helper utilities
This commit is contained in:
31
src/plugin-sdk/webhook-path.ts
Normal file
31
src/plugin-sdk/webhook-path.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
export function normalizeWebhookPath(raw: string): string {
|
||||
const trimmed = raw.trim();
|
||||
if (!trimmed) {
|
||||
return "/";
|
||||
}
|
||||
const withSlash = trimmed.startsWith("/") ? trimmed : `/${trimmed}`;
|
||||
if (withSlash.length > 1 && withSlash.endsWith("/")) {
|
||||
return withSlash.slice(0, -1);
|
||||
}
|
||||
return withSlash;
|
||||
}
|
||||
|
||||
export function resolveWebhookPath(params: {
|
||||
webhookPath?: string;
|
||||
webhookUrl?: string;
|
||||
defaultPath?: string | null;
|
||||
}): string | null {
|
||||
const trimmedPath = params.webhookPath?.trim();
|
||||
if (trimmedPath) {
|
||||
return normalizeWebhookPath(trimmedPath);
|
||||
}
|
||||
if (params.webhookUrl?.trim()) {
|
||||
try {
|
||||
const parsed = new URL(params.webhookUrl);
|
||||
return normalizeWebhookPath(parsed.pathname || "/");
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return params.defaultPath ?? null;
|
||||
}
|
||||
Reference in New Issue
Block a user