Skip to content

Instantly share code, notes, and snippets.

@basyusuf
Created December 5, 2020 17:58
Show Gist options
  • Save basyusuf/d918864309098f09707e95f55dbf5ca3 to your computer and use it in GitHub Desktop.
Save basyusuf/d918864309098f09707e95f55dbf5ca3 to your computer and use it in GitHub Desktop.
Main Function
exports.main = async (event, context, callback) => {
console.info("Request Event:", event);
let browser = null;
let responseBody = {};
let bucketDomain = "https://screenshot-buckets-test.s3.eu-central-1.amazonaws.com/";
let imageUniqueName;
const parsed_body = JSON.parse(event.body);
const PAGE_URL = parsed_body.page_url;
try {
console.info("Puppeteer start");
browser = await chromium.puppeteer.launch({
args: chromium.args,
defaultViewport: chromium.defaultViewport,
executablePath: await chromium.executablePath,
headless: chromium.headless,
ignoreHTTPSErrors: true,
});
let page = await browser.newPage();
await page.goto(PAGE_URL);
let image_response = await page.screenshot();
console.info("Screenshot Buffer:", image_response);
imageUniqueName = `${parsed_body.image_name}_${(new Date().getTime()).toString(36)}.png`;
await putObjectToS3(imageUniqueName,image_response);
let full_image_url = bucketDomain + imageUniqueName;
responseBody = { ...responseBody, image_url:full_image_url }
console.info("Response body:", responseBody);
} catch (error) {
return callback(error);
} finally {
if (browser !== null) {
await browser.close();
}
}
return callback(null,{
statusCode: 200,
body: JSON.stringify(responseBody)
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment