Skip to content

Commit 73f2d14

Browse files
committed
Release 0.0.3
1 parent ea01ce4 commit 73f2d14

File tree

23 files changed

+171
-99
lines changed

23 files changed

+171
-99
lines changed

package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "fileforge",
3-
"version": "0.0.1",
3+
"version": "0.0.3",
44
"private": false,
55
"repository": "https://github.com/OnedocLabs/fileforge-node-sdk",
66
"license": "MIT",
@@ -15,10 +15,8 @@
1515
"dependencies": {
1616
"url-join": "4.0.1",
1717
"form-data": "4.0.0",
18-
"formdata-node": "^6.0.3",
1918
"node-fetch": "2.7.0",
2019
"qs": "6.11.2",
21-
"form-data-encoder": "^4.0.2",
2220
"js-base64": "3.7.2"
2321
},
2422
"devDependencies": {

src/api/client/index.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/api/client/requests/index.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/api/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
export * from "./resources";
22
export * from "./types";
33
export * from "./errors";
4-
export * from "./client";

src/api/resources/pdf/client/Client.ts

Lines changed: 126 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,16 @@ import * as core from "../../../../core";
77
import * as fs from "fs";
88
import * as FileForge from "../../../index";
99
import * as stream from "stream";
10+
import { default as FormData } from "form-data";
1011
import urlJoin from "url-join";
1112
import * as errors from "../../../../errors/index";
1213
import * as serializers from "../../../../serialization/index";
1314

1415
export declare namespace Pdf {
1516
interface Options {
1617
environment?: core.Supplier<environments.FileForgeEnvironment | string>;
17-
username: core.Supplier<string>;
18-
password: core.Supplier<string>;
18+
username?: core.Supplier<string | undefined>;
19+
password?: core.Supplier<string | undefined>;
1920
apiKey: core.Supplier<string>;
2021
}
2122

@@ -50,15 +51,14 @@ export class Pdf {
5051
* @throws {@link FileForge.UnauthorizedError}
5152
* @throws {@link FileForge.InternalServerError}
5253
*/
53-
public async convertsADocOrDocxDocumentToPdf(
54+
public async convertDocx(
5455
file: File | fs.ReadStream,
55-
request: FileForge.PostPdfDocxRequest,
56+
request: FileForge.PdfConvertDocxRequest,
5657
requestOptions?: Pdf.RequestOptions
5758
): Promise<stream.Readable> {
58-
const _request = new core.FormDataWrapper();
59-
await _request.append("options", JSON.stringify(request.options));
60-
await _request.append("file", file);
61-
const _maybeEncodedRequest = _request.getRequest();
59+
const _request = new FormData();
60+
_request.append("options", JSON.stringify(request.options));
61+
_request.append("file", file);
6262
const _response = await core.fetcher<stream.Readable>({
6363
url: urlJoin(
6464
(await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default,
@@ -70,12 +70,12 @@ export class Pdf {
7070
"X-API-Key": await core.Supplier.get(this._options.apiKey),
7171
"X-Fern-Language": "JavaScript",
7272
"X-Fern-SDK-Name": "fileforge",
73-
"X-Fern-SDK-Version": "0.0.1",
73+
"X-Fern-SDK-Version": "0.0.3",
7474
"X-Fern-Runtime": core.RUNTIME.type,
7575
"X-Fern-Runtime-Version": core.RUNTIME.version,
76-
...(await _maybeEncodedRequest.getHeaders()),
7776
},
78-
body: await _maybeEncodedRequest.getBody(),
77+
contentType: "multipart/form-data; boundary=" + _request.getBoundary(),
78+
body: _request,
7979
responseType: "streaming",
8080
timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,
8181
maxRetries: requestOptions?.maxRetries,
@@ -130,22 +130,118 @@ export class Pdf {
130130
}
131131

132132
/**
133+
* Generates a PDF document from web assets.
133134
* @throws {@link FileForge.BadRequestError}
134135
* @throws {@link FileForge.UnauthorizedError}
135136
* @throws {@link FileForge.InternalServerError}
137+
* @throws {@link FileForge.BadGatewayError}
136138
*/
137-
public async postPdfMerge(
139+
public async generate(
138140
files: File[] | fs.ReadStream[],
139-
request: FileForge.PostPdfMergeRequest,
141+
request: FileForge.PdfGenerateRequest,
140142
requestOptions?: Pdf.RequestOptions
141143
): Promise<stream.Readable> {
142-
const _request = new core.FormDataWrapper();
143-
await _request.append("options", JSON.stringify(request.options));
144+
const _request = new FormData();
145+
_request.append("options", JSON.stringify(request.options));
144146
for (const _file of files) {
145-
await _request.append("files", _file);
147+
_request.append("files", _file);
148+
}
149+
150+
const _response = await core.fetcher<stream.Readable>({
151+
url: urlJoin(
152+
(await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default,
153+
"pdf/generate/"
154+
),
155+
method: "POST",
156+
headers: {
157+
Authorization: await this._getAuthorizationHeader(),
158+
"X-API-Key": await core.Supplier.get(this._options.apiKey),
159+
"X-Fern-Language": "JavaScript",
160+
"X-Fern-SDK-Name": "fileforge",
161+
"X-Fern-SDK-Version": "0.0.3",
162+
"X-Fern-Runtime": core.RUNTIME.type,
163+
"X-Fern-Runtime-Version": core.RUNTIME.version,
164+
},
165+
contentType: "multipart/form-data; boundary=" + _request.getBoundary(),
166+
body: _request,
167+
responseType: "streaming",
168+
timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,
169+
maxRetries: requestOptions?.maxRetries,
170+
});
171+
if (_response.ok) {
172+
return _response.body;
173+
}
174+
175+
if (_response.error.reason === "status-code") {
176+
switch (_response.error.statusCode) {
177+
case 400:
178+
throw new FileForge.BadRequestError(
179+
await serializers.ErrorSchema.parseOrThrow(_response.error.body, {
180+
unrecognizedObjectKeys: "passthrough",
181+
allowUnrecognizedUnionMembers: true,
182+
allowUnrecognizedEnumValues: true,
183+
breadcrumbsPrefix: ["response"],
184+
})
185+
);
186+
case 401:
187+
throw new FileForge.UnauthorizedError(
188+
await serializers.ErrorSchema.parseOrThrow(_response.error.body, {
189+
unrecognizedObjectKeys: "passthrough",
190+
allowUnrecognizedUnionMembers: true,
191+
allowUnrecognizedEnumValues: true,
192+
breadcrumbsPrefix: ["response"],
193+
})
194+
);
195+
case 500:
196+
throw new FileForge.InternalServerError(_response.error.body);
197+
case 502:
198+
throw new FileForge.BadGatewayError(
199+
await serializers.ErrorSchema.parseOrThrow(_response.error.body, {
200+
unrecognizedObjectKeys: "passthrough",
201+
allowUnrecognizedUnionMembers: true,
202+
allowUnrecognizedEnumValues: true,
203+
breadcrumbsPrefix: ["response"],
204+
})
205+
);
206+
default:
207+
throw new errors.FileForgeError({
208+
statusCode: _response.error.statusCode,
209+
body: _response.error.body,
210+
});
211+
}
212+
}
213+
214+
switch (_response.error.reason) {
215+
case "non-json":
216+
throw new errors.FileForgeError({
217+
statusCode: _response.error.statusCode,
218+
body: _response.error.rawBody,
219+
});
220+
case "timeout":
221+
throw new errors.FileForgeTimeoutError();
222+
case "unknown":
223+
throw new errors.FileForgeError({
224+
message: _response.error.errorMessage,
225+
});
226+
}
227+
}
228+
229+
/**
230+
* @throws {@link FileForge.BadRequestError}
231+
* @throws {@link FileForge.UnauthorizedError}
232+
* @throws {@link FileForge.InternalServerError}
233+
*/
234+
public async merge(
235+
files: File[] | fs.ReadStream[],
236+
request: FileForge.PdfMergeRequest,
237+
requestOptions?: Pdf.RequestOptions
238+
): Promise<stream.Readable> {
239+
const _request = new FormData();
240+
_request.append("options", JSON.stringify(request.options));
241+
for (const _file of files) {
242+
_request.append("files", _file);
146243
}
147244

148-
const _maybeEncodedRequest = _request.getRequest();
149245
const _response = await core.fetcher<stream.Readable>({
150246
url: urlJoin(
151247
(await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default,
@@ -157,12 +253,12 @@ export class Pdf {
157253
"X-API-Key": await core.Supplier.get(this._options.apiKey),
158254
"X-Fern-Language": "JavaScript",
159255
"X-Fern-SDK-Name": "fileforge",
160-
"X-Fern-SDK-Version": "0.0.1",
256+
"X-Fern-SDK-Version": "0.0.3",
161257
"X-Fern-Runtime": core.RUNTIME.type,
162258
"X-Fern-Runtime-Version": core.RUNTIME.version,
163-
...(await _maybeEncodedRequest.getHeaders()),
164259
},
165-
body: await _maybeEncodedRequest.getBody(),
260+
contentType: "multipart/form-data; boundary=" + _request.getBoundary(),
261+
body: _request,
166262
responseType: "streaming",
167263
timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,
168264
maxRetries: requestOptions?.maxRetries,
@@ -217,9 +313,15 @@ export class Pdf {
217313
}
218314

219315
protected async _getAuthorizationHeader(): Promise<string | undefined> {
220-
return core.BasicAuth.toAuthorizationHeader({
221-
username: await core.Supplier.get(this._options.username),
222-
password: await core.Supplier.get(this._options.password),
223-
});
316+
const username = await core.Supplier.get(this._options.username);
317+
const password = await core.Supplier.get(this._options.password);
318+
if (username != null && password != null) {
319+
return core.BasicAuth.toAuthorizationHeader({
320+
username: username,
321+
password: password,
322+
});
323+
}
324+
325+
return undefined;
224326
}
225327
}

src/api/resources/pdf/client/requests/PostPdfDocxRequest.ts renamed to src/api/resources/pdf/client/requests/PdfConvertDocxRequest.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import * as FileForge from "../../../../index";
88
* @example
99
* {}
1010
*/
11-
export interface PostPdfDocxRequest {
11+
export interface PdfConvertDocxRequest {
1212
/**
1313
* Conversion options. This field is required even if empty.
1414
*
@@ -34,5 +34,5 @@ export interface PostPdfDocxRequest {
3434
*
3535
* There will not be an error if a variable is not found in the document, nor if variables found in the document are not in the options.
3636
*/
37-
options: FileForge.PostPdfDocxRequestOptions;
37+
options: FileForge.PdfConvertDocxRequestOptions;
3838
}

src/api/client/requests/GenerateRequest.ts renamed to src/api/resources/pdf/client/requests/PdfGenerateRequest.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
* This file was auto-generated by Fern from our API Definition.
33
*/
44

5-
import * as FileForge from "../../index";
5+
import * as FileForge from "../../../../index";
66

77
/**
88
* @example
99
* {}
1010
*/
11-
export interface GenerateRequest {
11+
export interface PdfGenerateRequest {
1212
/** Conversion options. This field is required even if empty. */
13-
options: FileForge.GenerateRequestOptions;
13+
options: FileForge.PdfGenerateRequestOptions;
1414
}

src/api/resources/pdf/client/requests/PostPdfMergeRequest.ts renamed to src/api/resources/pdf/client/requests/PdfMergeRequest.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ import * as FileForge from "../../../../index";
88
* @example
99
* {}
1010
*/
11-
export interface PostPdfMergeRequest {
12-
options: FileForge.PostPdfMergeRequestOptions;
11+
export interface PdfMergeRequest {
12+
options: FileForge.PdfMergeRequestOptions;
1313
}
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1-
export { type PostPdfDocxRequest } from "./PostPdfDocxRequest";
2-
export { type PostPdfMergeRequest } from "./PostPdfMergeRequest";
1+
export { type PdfConvertDocxRequest } from "./PdfConvertDocxRequest";
2+
export { type PdfGenerateRequest } from "./PdfGenerateRequest";
3+
export { type PdfMergeRequest } from "./PdfMergeRequest";

src/api/resources/pdf/types/PostPdfDocxRequestOptions.ts renamed to src/api/resources/pdf/types/PdfConvertDocxRequestOptions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
*
2828
* There will not be an error if a variable is not found in the document, nor if variables found in the document are not in the options.
2929
*/
30-
export interface PostPdfDocxRequestOptions {
30+
export interface PdfConvertDocxRequestOptions {
3131
/** Map of template literals to replace in the document. */
3232
templateLiterals?: Record<string, string>;
3333
}

0 commit comments

Comments
 (0)