Updates lambda functions with more robust err handling

This commit is contained in:
Alicia Sykes
2023-07-09 23:23:50 +01:00
parent e37474e0d4
commit 9f06802a50
13 changed files with 203 additions and 167 deletions

View File

@@ -7,13 +7,13 @@ exports.handler = async function(event, context) {
if (!url) {
return {
statusCode: 400,
body: JSON.stringify({ message: 'You must provide a URL query parameter!' }),
body: JSON.stringify({ error: 'You must provide a URL query parameter!' }),
};
}
let dnsLookupTime;
let responseCode;
let startTime = performance.now();
let startTime;
const obs = new PerformanceObserver((items) => {
dnsLookupTime = items.getEntries()[0].duration;
@@ -24,28 +24,46 @@ exports.handler = async function(event, context) {
performance.mark('A');
return new Promise((resolve) => {
https.get(url, (res) => {
let data = '';
responseCode = res.statusCode;
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
performance.mark('B');
performance.measure('A to B', 'A', 'B');
let responseTime = performance.now() - startTime;
obs.disconnect();
resolve({
statusCode: 200,
body: JSON.stringify({ isUp: true, dnsLookupTime, responseTime, responseCode }),
try {
startTime = performance.now();
const response = await new Promise((resolve, reject) => {
const req = https.get(url, res => {
let data = '';
responseCode = res.statusCode;
res.on('data', chunk => {
data += chunk;
});
res.on('end', () => {
resolve(res);
});
});
}).on('error', (e) => {
resolve({
statusCode: 500,
body: JSON.stringify({ isUp: false, error: e.message }),
});
req.on('error', reject);
req.end();
});
});
if (responseCode < 200 || responseCode >= 400) {
return {
statusCode: 200,
body: JSON.stringify({ error: `Received non-success response code: ${responseCode}` }),
};
}
performance.mark('B');
performance.measure('A to B', 'A', 'B');
let responseTime = performance.now() - startTime;
obs.disconnect();
return {
statusCode: 200,
body: JSON.stringify({ isUp: true, dnsLookupTime, responseTime, responseCode }),
};
} catch (error) {
obs.disconnect();
return {
statusCode: 200,
body: JSON.stringify({ error: `Error during operation: ${error.message}` }),
};
}
};