diff --git a/servers/fdr/src/__test__/unit-tests/ParsedBaseUrl.test.ts b/servers/fdr/src/__test__/unit-tests/ParsedBaseUrl.test.ts index e94432008a..205b9c4a2b 100644 --- a/servers/fdr/src/__test__/unit-tests/ParsedBaseUrl.test.ts +++ b/servers/fdr/src/__test__/unit-tests/ParsedBaseUrl.test.ts @@ -14,4 +14,18 @@ describe("ParsedBaseUrl", () => { expect(parsedUrl.path).toEqual("/docs"); expect(parsedUrl.getFullUrl()).toEqual("buildwithfern.com/docs"); }); + + it("apidocs.polytomic.com", () => { + const parsedUrl = ParsedBaseUrl.parse("apidocs.polytomic.com"); + expect(parsedUrl.hostname).toEqual("apidocs.polytomic.com"); + expect(parsedUrl.path).toEqual(undefined); + expect(parsedUrl.toURL()).toEqual(new URL("https://apidocs.polytomic.com")); + }); + + it("polytomic.docs.buildwithfern.com", () => { + const parsedUrl = ParsedBaseUrl.parse("polytomic.docs.buildwithfern.com"); + expect(parsedUrl.hostname).toEqual("polytomic.docs.buildwithfern.com"); + expect(parsedUrl.path).toEqual(undefined); + expect(parsedUrl.toURL()).toEqual(new URL("https://polytomic.docs.buildwithfern.com")); + }); }); diff --git a/servers/fdr/src/controllers/docs/v2/getDocsReadV2Service.ts b/servers/fdr/src/controllers/docs/v2/getDocsReadV2Service.ts index d8f5fc1d0b..bd3aeb7e08 100644 --- a/servers/fdr/src/controllers/docs/v2/getDocsReadV2Service.ts +++ b/servers/fdr/src/controllers/docs/v2/getDocsReadV2Service.ts @@ -2,7 +2,7 @@ import { convertDbAPIDefinitionsToRead, convertDbDocsConfigToRead } from "@fern- import NodeCache from "node-cache"; import { DocsV2Read, DocsV2ReadService } from "../../../api"; import type { FdrApplication } from "../../../app"; -import { getParsedUrl } from "../../../util"; +import { ParsedBaseUrl } from "../../../util/ParsedBaseUrl"; const SECONDS_IN_ONE_HOUR = 60 * 60; @@ -14,21 +14,21 @@ const DOCS_CONFIG_ID_CACHE = new NodeCache({ export function getDocsReadV2Service(app: FdrApplication): DocsV2ReadService { return new DocsV2ReadService({ getDocsForUrl: async (req, res) => { - const parsedUrl = getParsedUrl(req.body.url); - const response = await app.docsDefinitionCache.getDocsForUrl({ url: parsedUrl }); + const parsedUrl = ParsedBaseUrl.parse(req.body.url); + const response = await app.docsDefinitionCache.getDocsForUrl({ url: parsedUrl.toURL() }); return res.send(response); }, getPrivateDocsForUrl: async (req, res) => { - const parsedUrl = getParsedUrl(req.body.url); + const parsedUrl = ParsedBaseUrl.parse(req.body.url); const response = await app.docsDefinitionCache.getDocsForUrl({ - url: parsedUrl, + url: parsedUrl.toURL(), authorization: req.headers.authorization, }); return res.send(response); }, getOrganizationForUrl: async (req, res) => { - const parsedUrl = getParsedUrl(req.body.url); - const orgId = await app.docsDefinitionCache.getOrganizationForUrl(parsedUrl); + const parsedUrl = ParsedBaseUrl.parse(req.body.url); + const orgId = await app.docsDefinitionCache.getOrganizationForUrl(parsedUrl.toURL()); if (orgId == null) { throw new DocsV2Read.DomainNotRegisteredError(); } diff --git a/servers/fdr/src/util/getParsedUrl.ts b/servers/fdr/src/util/getParsedUrl.ts deleted file mode 100644 index 84525eff51..0000000000 --- a/servers/fdr/src/util/getParsedUrl.ts +++ /dev/null @@ -1,8 +0,0 @@ -const HAS_HTTPS_REGEX = /^https?:\/\//i; - -export function getParsedUrl(domain: string): URL { - if (!HAS_HTTPS_REGEX.test(domain)) { - domain = "https://" + domain; - } - return new URL(domain); -} diff --git a/servers/fdr/src/util/index.ts b/servers/fdr/src/util/index.ts index 408ceac20f..2a49122918 100644 --- a/servers/fdr/src/util/index.ts +++ b/servers/fdr/src/util/index.ts @@ -1,6 +1,5 @@ export type { WithoutQuestionMarks } from "./WithoutQuestionMarks"; export { assertNever, assertNeverNoThrow } from "./assertNever"; export { truncateToBytes } from "./bytes"; -export { getParsedUrl } from "./getParsedUrl"; export { convertMarkdownToText } from "./markdown"; export { readBuffer, writeBuffer } from "./serde";