ai_api / src /shared /utils /codexBaseUrl.ts
Yogesh
initial deploy
cd8bd0a
Raw
History Blame Contribute Delete
1.08 kB
export type CodexWireApi = "chat" | "responses";
function normalizeUrlPath(pathname: string, wireApi: CodexWireApi): string {
let path = pathname.replace(/\/+$/g, "");
if (wireApi === "responses") {
path = path.replace(/\/responses(?:\/.*)?$/i, "");
}
path = path.replace(/\/v1$/i, "").replace(/\/api$/i, "");
const apiPath = `${path}/api/v1`.replace(/\/{2,}/g, "/");
return apiPath.startsWith("/") ? apiPath : `/${apiPath}`;
}
export function normalizeCodexBaseUrl(baseUrl: string, wireApi: CodexWireApi = "chat"): string {
const trimmed = baseUrl.trim().replace(/\/+$/g, "");
if (!trimmed) return trimmed;
try {
const parsed = new URL(trimmed);
parsed.search = "";
parsed.hash = "";
parsed.pathname = normalizeUrlPath(parsed.pathname, wireApi);
return parsed.toString().replace(/\/+$/g, "");
} catch {
let normalized = trimmed;
if (wireApi === "responses") {
normalized = normalized.replace(/\/responses(?:\/.*)?$/i, "");
}
return normalized.replace(/\/v1$/i, "").replace(/\/api$/i, "") + "/api/v1";
}
}