From 70a37d33ed46c1cb4262e47f08a64f3a122d8ca5 Mon Sep 17 00:00:00 2001 From: Rezer Date: Sat, 7 May 2022 22:54:28 -0700 Subject: [PATCH] Modified retrieval of basic/advanced headers Added up to 10 retries for basicHeaders and advancedHeaders within handle-scheduled-checkin.ts Increased puppeteer timeout to 60s within sw-generate-headers.ts --- src/handlers/handle-scheduled-checkin.ts | 30 +++++++++++++++++++++--- src/lib/sw-generate-headers.ts | 2 ++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/handlers/handle-scheduled-checkin.ts b/src/handlers/handle-scheduled-checkin.ts index 8db5593..22f497f 100644 --- a/src/handlers/handle-scheduled-checkin.ts +++ b/src/handlers/handle-scheduled-checkin.ts @@ -39,10 +39,14 @@ async function handleInternal(event: AWSLambda.SQSEvent) { // TODO: is the message nested within the EventBridge message that triggered this message? assert(Queue.isMessage(body), 'Invalid message'); - const basicHeaders = await SwClient.getBasicHeaders(); - const advancedHeaders = await SwGenerateHeaders.generateHeaders(body.reservation); - + const basicHeaders = await getHeadersWithRetry( + () => SwClient.getBasicHeaders(), "basic headers", 10); + console.debug('basicHeaders', basicHeaders); + + const advancedHeaders = await getHeadersWithRetry( + () => SwGenerateHeaders.generateHeaders(body.reservation), "advanced headers", 10); + console.debug('advancedHeaders', advancedHeaders); const checkinDateTime = Luxon.DateTime.fromSeconds(body.checkin_available_epoch); @@ -119,3 +123,23 @@ function adjustMessageVisibilityTimeout(input: AdjustMessageVisibilityTimeoutInp return client.send(command); } + +async function getHeadersWithRetry(func: () => Promise, + headerName: string, maxRetries: int) +{ + const waitMs = util.promisify(setTimeout); + while(true) + { + try{ + const headers = await func(); + return headers; + } + catch(error){ + if(maxRetries <= 0) + throw error; + console.debug(`Failed getting ${headerName}. Retrying in 5s...\nException details: ${error}`) + await waitMs(5000); + maxRetries--; + } + } +} \ No newline at end of file diff --git a/src/lib/sw-generate-headers.ts b/src/lib/sw-generate-headers.ts index 7b867db..fa9eaa7 100644 --- a/src/lib/sw-generate-headers.ts +++ b/src/lib/sw-generate-headers.ts @@ -17,6 +17,8 @@ export async function generateHeaders(reservation: Reservation.Reservation) { }); const page = await browser.newPage(); + page.setDefaultNavigationTimeout(60000); + await page.setUserAgent( 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 ' + '(KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'