Skip to content

Commit

Permalink
feat(chromium): add downloadFrom property to routes
Browse files Browse the repository at this point in the history
  • Loading branch information
cherfia committed Sep 24, 2024
1 parent e1f766e commit dba3ff1
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 110 deletions.
45 changes: 8 additions & 37 deletions src/chromium/converters/html.converter.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
import FormData from 'form-data';

import {
GotenbergUtils,
Metadata,
PathLikeOrReadStream,
PdfFormat
} from '../../common';
import { PageProperties } from '../interfaces/converter.types';
import { GotenbergUtils } from '../../common';
import { HtmlConversionOptions } from '../interfaces/converter.types';
import { ConverterUtils } from '../utils/converter.utils';
import { Converter } from './converter';
import { ChromiumRoute, Chromiumly } from '../../main.config';
import { EmulatedMediaType, Cookie } from '../interfaces/common.types';

/**
* Class representing an HTML converter that extends the base Converter class.
Expand Down Expand Up @@ -47,6 +41,7 @@ export class HtmlConverter extends Converter {
* @param {boolean} [options.skipNetworkIdleEvent] - Whether to skip network idle event.
* @param {Metadata} options.metadata - Metadata to be written.
* @param {Cookie[]} options.cookies - Cookies to be written.
* @param {DownloadFrom} [options.downloadFrom] - Download a file from a URL. It must return a Content-Disposition header with a filename parameter.
* @returns {Promise<Buffer>} A Promise resolving to the converted PDF content as a Buffer.
*/
async convert({
Expand All @@ -66,34 +61,9 @@ export class HtmlConverter extends Converter {
failOnConsoleExceptions,
skipNetworkIdleEvent,
metadata,
cookies
}: {
html: PathLikeOrReadStream;
assets?: { file: PathLikeOrReadStream; name: string }[];
header?: PathLikeOrReadStream;
footer?: PathLikeOrReadStream;
properties?: PageProperties;
/**
* @deprecated Starting from Gotenberg version 8.0.0, Chromium no longer provides support for pdfFormat.
* @see {@link https://github.com/gotenberg/gotenberg/releases/tag/v8.0.0}
*/
pdfFormat?: PdfFormat;
pdfUA?: boolean;
emulatedMediaType?: EmulatedMediaType;
waitDelay?: string;
waitForExpression?: string;
/**
* @deprecated Starting from Gotenberg version 8.0.0, Chromium no longer provides support for userAgent.
* @see {@link https://github.com/gotenberg/gotenberg/releases/tag/v8.0.0}
*/
userAgent?: string;
extraHttpHeaders?: Record<string, string>;
failOnHttpStatusCodes?: number[];
failOnConsoleExceptions?: boolean;
skipNetworkIdleEvent?: boolean;
metadata?: Metadata;
cookies?: Cookie[];
}): Promise<Buffer> {
cookies,
downloadFrom
}: HtmlConversionOptions): Promise<Buffer> {
const data = new FormData();

await GotenbergUtils.addFile(data, html, 'index.html');
Expand Down Expand Up @@ -121,7 +91,8 @@ export class HtmlConverter extends Converter {
failOnConsoleExceptions,
skipNetworkIdleEvent,
metadata,
cookies
cookies,
downloadFrom
});

return GotenbergUtils.fetch(
Expand Down
45 changes: 8 additions & 37 deletions src/chromium/converters/markdown.converter.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
import FormData from 'form-data';

import {
GotenbergUtils,
PdfFormat,
PathLikeOrReadStream,
Metadata
} from '../../common';
import { PageProperties } from '../interfaces/converter.types';
import { GotenbergUtils } from '../../common';
import { MarkdownConversionOptions } from '../interfaces/converter.types';
import { ConverterUtils } from '../utils/converter.utils';
import { Converter } from './converter';
import { ChromiumRoute, Chromiumly } from '../../main.config';
import { EmulatedMediaType, Cookie } from '../interfaces/common.types';

/**
* Class representing a Markdown converter that extends the base Converter class.
Expand Down Expand Up @@ -48,6 +42,7 @@ export class MarkdownConverter extends Converter {
* @param {boolean} [options.skipNetworkIdleEvent] - Whether to skip network idle event.
* @param {Metadata} options.metadata - Metadata to be written.
* @param {Cookie[]} options.cookies - Cookies to be written.
* @param {DownloadFrom} [options.downloadFrom] - Download a file from a URL. It must return a Content-Disposition header with a filename parameter.
* @returns {Promise<Buffer>} A Promise resolving to the converted PDF content as a Buffer.
*/
async convert({
Expand All @@ -67,34 +62,9 @@ export class MarkdownConverter extends Converter {
failOnConsoleExceptions,
skipNetworkIdleEvent,
metadata,
cookies
}: {
html: PathLikeOrReadStream;
markdown: PathLikeOrReadStream;
header?: PathLikeOrReadStream;
footer?: PathLikeOrReadStream;
properties?: PageProperties;
/**
* @deprecated Starting from Gotenberg version 8.0.0, Chromium no longer provides support for pdfFormat.
* @see {@link https://github.com/gotenberg/gotenberg/releases/tag/v8.0.0}
*/
pdfFormat?: PdfFormat;
pdfUA?: boolean;
emulatedMediaType?: EmulatedMediaType;
waitDelay?: string;
waitForExpression?: string;
/**
* @deprecated Starting from Gotenberg version 8.0.0, Chromium no longer provides support for userAgent.
* @see {@link https://github.com/gotenberg/gotenberg/releases/tag/v8.0.0}
*/
userAgent?: string;
extraHttpHeaders?: Record<string, string>;
failOnHttpStatusCodes?: number[];
failOnConsoleExceptions?: boolean;
skipNetworkIdleEvent?: boolean;
metadata?: Metadata;
cookies?: Cookie[];
}): Promise<Buffer> {
cookies,
downloadFrom
}: MarkdownConversionOptions): Promise<Buffer> {
const data = new FormData();

await GotenbergUtils.addFile(data, html, 'index.html');
Expand All @@ -116,7 +86,8 @@ export class MarkdownConverter extends Converter {
failOnConsoleExceptions,
skipNetworkIdleEvent,
metadata,
cookies
cookies,
downloadFrom
});

return GotenbergUtils.fetch(
Expand Down
44 changes: 8 additions & 36 deletions src/chromium/converters/url.converter.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
import { URL } from 'url';
import FormData from 'form-data';
import {
GotenbergUtils,
PdfFormat,
PathLikeOrReadStream,
Metadata
} from '../../common';
import { PageProperties } from '../interfaces/converter.types';
import { GotenbergUtils } from '../../common';
import { UrlConversionOptions } from '../interfaces/converter.types';
import { ConverterUtils } from '../utils/converter.utils';
import { Converter } from './converter';
import { ChromiumRoute, Chromiumly } from '../../main.config';
import { EmulatedMediaType, Cookie } from '../interfaces/common.types';

/**
* Class representing a URL converter that extends the base Converter class.
Expand Down Expand Up @@ -47,6 +41,7 @@ export class UrlConverter extends Converter {
* @param {boolean} [options.skipNetworkIdleEvent] - Whether to skip network idle event.
* @param {Metadata} options.metadata - Metadata to be written.
* @param {Cookie[]} options.cookies - Cookies to be written.
* @param {DownloadFrom} [options.downloadFrom] - Download a file from a URL. It must return a Content-Disposition header with a filename parameter.
* @returns {Promise<Buffer>} A Promise resolving to the converted PDF content as a Buffer.
*/
async convert({
Expand All @@ -65,33 +60,9 @@ export class UrlConverter extends Converter {
failOnConsoleExceptions,
skipNetworkIdleEvent,
metadata,
cookies
}: {
url: string;
header?: PathLikeOrReadStream;
footer?: PathLikeOrReadStream;
properties?: PageProperties;
/**
* @deprecated Starting from Gotenberg version 8.0.0, Chromium no longer provides support for pdfFormat.
* @see {@link https://github.com/gotenberg/gotenberg/releases/tag/v8.0.0}
*/
pdfFormat?: PdfFormat;
pdfUA?: boolean;
emulatedMediaType?: EmulatedMediaType;
waitDelay?: string;
waitForExpression?: string;
/**
* @deprecated Starting from Gotenberg version 8.0.0, Chromium no longer provides support for userAgent.
* @see {@link https://github.com/gotenberg/gotenberg/releases/tag/v8.0.0}
*/
userAgent?: string;
extraHttpHeaders?: Record<string, string>;
failOnHttpStatusCodes?: number[];
failOnConsoleExceptions?: boolean;
skipNetworkIdleEvent?: boolean;
metadata?: Metadata;
cookies?: Cookie[];
}): Promise<Buffer> {
cookies,
downloadFrom
}: UrlConversionOptions): Promise<Buffer> {
const _url = new URL(url);
const data = new FormData();

Expand All @@ -112,7 +83,8 @@ export class UrlConverter extends Converter {
failOnConsoleExceptions,
skipNetworkIdleEvent,
metadata,
cookies
cookies,
downloadFrom
});

return GotenbergUtils.fetch(
Expand Down
2 changes: 2 additions & 0 deletions src/chromium/interfaces/common.types.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { PathLikeOrReadStream } from '../../common';
import { DownloadFrom } from '../../common/types';

export type EmulatedMediaType = 'screen' | 'print';

Expand All @@ -23,4 +24,5 @@ export type ChromiumOptions = {
failOnConsoleExceptions?: boolean; // Return a 409 Conflict response if there are exceptions in the Chromium console (default false)
skipNetworkIdleEvent?: boolean; // Do not wait for Chromium network to be idle (default false)
cookies?: Cookie[]; // Cookies to be written.
downloadFrom?: DownloadFrom; // Download a file from a URL. It must return a Content-Disposition header with a filename parameter.
};

0 comments on commit dba3ff1

Please sign in to comment.