Skip to content

Commit 044f459

Browse files
fix: 404 response if the server url includes /general/v0/general (#90)
This PR aims to fix a bug that causes a 404 response if the server URL includes `/general/v0/general`.
1 parent 1cb801e commit 044f459

File tree

3 files changed

+61
-8
lines changed

3 files changed

+61
-8
lines changed

src/hooks/custom/HttpsCheckHook.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@ export class HttpsCheckHook implements SDKInitHook {
1515
sdkInit(opts: SDKInitOptions): SDKInitOptions {
1616
const { baseURL, client } = opts;
1717

18-
if (
19-
baseURL &&
20-
BASE_HOSTNAME_REGEX.test(baseURL.hostname) &&
21-
baseURL.protocol !== BASE_PROTOCOL
22-
) {
23-
console.warn("Base URL protocol is not HTTPS. Updating to HTTPS.");
24-
const newBaseURL = baseURL.href.replace(baseURL.protocol, BASE_PROTOCOL);
25-
return { baseURL: new URL(newBaseURL), client: client };
18+
if (baseURL) {
19+
// -- pathname should always be empty
20+
baseURL.pathname = "/";
21+
22+
if (BASE_HOSTNAME_REGEX.test(baseURL.hostname) && baseURL.protocol !== BASE_PROTOCOL) {
23+
console.warn("Base URL protocol is not HTTPS. Updating to HTTPS.");
24+
const newBaseURL = baseURL.href.replace(baseURL.protocol, BASE_PROTOCOL);
25+
return {baseURL: new URL(newBaseURL), client: client};
26+
}
2627
}
2728

2829
return { baseURL: baseURL, client: client };
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { readFileSync } from "fs";
2+
3+
import { UnstructuredClient } from "../../src";
4+
import { PartitionResponse } from "../../src/sdk/models/operations";
5+
import { PartitionParameters, Strategy } from "../../src/sdk/models/shared";
6+
7+
describe("HttpsCheckHook integration tests", () => {
8+
const FAKE_API_KEY = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
9+
10+
it.each([
11+
"http://localhost:8000",
12+
"http://localhost:8000/general/v0/general",
13+
])("should throw error when given filename is empty", async (serverURL) => {
14+
const client = new UnstructuredClient({
15+
serverURL: serverURL,
16+
security: {
17+
apiKeyAuth: FAKE_API_KEY,
18+
},
19+
});
20+
21+
const file = {
22+
content: readFileSync("test/data/layout-parser-paper-fast.pdf"),
23+
fileName: "test/data/layout-parser-paper-fast.pdf",
24+
};
25+
26+
const requestParams: PartitionParameters = {
27+
files: file,
28+
strategy: Strategy.Fast,
29+
};
30+
31+
const res: PartitionResponse = await client.general.partition({
32+
partitionParameters: {
33+
...requestParams,
34+
splitPdfPage: false,
35+
},
36+
});
37+
38+
expect(res.statusCode).toEqual(200);
39+
});
40+
});

test/unit/HttpsCheckHook.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,16 @@ describe("HttpsCheckHook", () => {
6161
expect(result.baseURL).toBeNull();
6262
expect(consoleSpy).not.toHaveBeenCalled();
6363
});
64+
65+
it("should update the pathname to empty", () => {
66+
const baseURL = new URL("https://example.unstructuredapp.io/general/v0/general");
67+
const client = new HTTPClient();
68+
const opts = { baseURL, client };
69+
const hook = new HttpsCheckHook();
70+
71+
const result = hook.sdkInit(opts);
72+
73+
expect(result.baseURL?.pathname).toBe("/");
74+
expect(consoleSpy).not.toHaveBeenCalled();
75+
});
6476
});

0 commit comments

Comments
 (0)