Skip to content

Commit

Permalink
Refactor code to not pass browser around, so createPDF is everythign …
Browse files Browse the repository at this point in the history
…you need to create the PDF
  • Loading branch information
rmehner committed Jan 30, 2023
1 parent b8d0690 commit 222ffd0
Showing 1 changed file with 19 additions and 19 deletions.
38 changes: 19 additions & 19 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ const PdfRequestBodySchema = JSON.parse(
/**
* @typedef {Parameters<import("playwright-core").Page["pdf"]>[0]} PdfOptions
* @typedef {Parameters<import("playwright-core").Page["goto"]>[1]} GotoOptions
* @typedef {import("playwright-core").Browser} Browser
* @typedef {import("playwright-core").BrowserContextOptions} BrowserContextOptions
*/

Expand All @@ -35,34 +34,38 @@ export const defaultGotoOptions = /** @type {const} */ ({

/**
*
* @param {Browser} browser
* @param {string} url
* @param {PdfOptions} pdfOptions
* @param {BrowserContextOptions} browserContextOptions
* @param {GotoOptions} gotoOptions
* @returns Buffer
*/
const createPDF = async (
browser,
url,
pdfOptions = {},
browserContextOptions = {},
gotoOptions = {}
) => {
const context = await browser.newContext(browserContextOptions);
const page = await context.newPage();
const browser = await chromium.launch();

const response = await page.goto(url, gotoOptions);
if (response?.ok()) {
return page.pdf(pdfOptions);
}
try {
const context = await browser.newContext(browserContextOptions);
const page = await context.newPage();

const response = await page.goto(url, gotoOptions);
if (response?.ok()) {
return await page.pdf(pdfOptions);
}

return Promise.reject({
error: true,
message: await response?.text(),
status: response?.status(),
statusText: response?.statusText(),
});
return await Promise.reject({
error: true,
message: await response?.text(),
status: response?.status(),
statusText: response?.statusText(),
});
} finally {
await browser.close();
}
};

/**
Expand Down Expand Up @@ -116,16 +119,13 @@ function build(opts = {}) {
...gotoOptions,
};

const browser = await chromium.launch();
try {
return await createPDF(browser, url, pdfOpts, contextOpts, gotoOpts);
return await createPDF(url, pdfOpts, contextOpts, gotoOpts);
} catch (error) {
// @ts-ignore
response.code(error.status ?? 500);

return error;
} finally {
browser.close();
}
}
);
Expand Down

0 comments on commit 222ffd0

Please sign in to comment.