Skip to content

Commit

Permalink
Add support for HEAD requests in WebsiteMonitor and update request ha…
Browse files Browse the repository at this point in the history
…ndling
  • Loading branch information
simlarsen committed Nov 13, 2024
1 parent 517d00d commit eded26d
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
1 change: 1 addition & 0 deletions Probe/Utils/Monitors/Monitor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,7 @@ export default class MonitorUtil {
const response: ProbeWebsiteResponse | null = await WebsiteMonitor.ping(
monitorStep.data?.monitorDestination as URL,
{
isHeadRequest: MonitorUtil.isHeadRequest(monitorStep),
monitorId: monitorId,
retry: 10,
timeout: new PositiveNumber(60000), // 60 seconds
Expand Down
26 changes: 22 additions & 4 deletions Probe/Utils/Monitors/MonitorTypes/WebsiteMonitor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ export default class WebsiteMonitor {
url: URL,
options: {
retry?: number | undefined;
isHeadRequest?: boolean | undefined;
currentRetryCount?: number | undefined;
monitorId?: ObjectID | undefined;
isOnlineCheckRequest?: boolean | undefined;
Expand All @@ -44,7 +45,11 @@ export default class WebsiteMonitor {
options.currentRetryCount = 1;
}

const requestType: HTTPMethod = HTTPMethod.GET;
let requestType: HTTPMethod = HTTPMethod.GET;

if (options.isHeadRequest) {
requestType = HTTPMethod.HEAD;
}

try {
logger.debug(
Expand All @@ -53,13 +58,26 @@ export default class WebsiteMonitor {
}`,
);

const startTime: [number, number] = process.hrtime();
const result: WebsiteResponse = await WebsiteRequest.fetch(url, {
isHeadRequest: false,
let startTime: [number, number] = process.hrtime();
let result: WebsiteResponse = await WebsiteRequest.fetch(url, {
isHeadRequest: options.isHeadRequest,
timeout: options.timeout?.toNumber() || 5000,
doNotFollowRedirects: options.doNotFollowRedirects || false,
});

if (
result.responseStatusCode >= 400 &&
result.responseStatusCode < 600 &&
requestType === HTTPMethod.HEAD
) {
startTime = process.hrtime();
result = await WebsiteRequest.fetch(url, {
isHeadRequest: false,
timeout: options.timeout?.toNumber() || 5000,
doNotFollowRedirects: options.doNotFollowRedirects || false,
});
}

const endTime: [number, number] = process.hrtime(startTime);
const responseTimeInMS: PositiveNumber = new PositiveNumber(
(endTime[0] * 1000000000 + endTime[1]) / 1000000,
Expand Down

0 comments on commit eded26d

Please sign in to comment.