private async filterRequests()

in packages/web-api-scan-request-sender/src/sender/scan-request-selector.ts [65:108]


    private async filterRequests(filteredScanRequests: ScanRequests, scanRequests: OnDemandPageScanRequest[]): Promise<void> {
        await Promise.all(
            scanRequests.map(async (scanRequest) => {
                const scanResult = await this.onDemandPageScanRunResultProvider.readScanRun(scanRequest.id);

                if (scanResult === undefined) {
                    filteredScanRequests.toDelete.push({ request: scanRequest, condition: 'notFound' });

                    return;
                }

                if (scanResult.run.state === 'completed') {
                    filteredScanRequests.toDelete.push({ request: scanRequest, condition: 'completed' });

                    return;
                }

                if (scanResult.run.retryCount >= this.maxFailedScanRetryCount) {
                    filteredScanRequests.toDelete.push({ request: scanRequest, condition: 'noRetry' });

                    return;
                }

                if (
                    scanResult.run.state === 'accepted' &&
                    (scanResult.run.retryCount === undefined || scanResult.run.retryCount < this.maxFailedScanRetryCount)
                ) {
                    filteredScanRequests.toQueue.push({ request: scanRequest, result: scanResult, condition: 'accepted' });

                    return;
                }

                if (
                    (scanResult.run.state === 'queued' || scanResult.run.state === 'running' || scanResult.run.state === 'failed') && // terminated or failed
                    (scanResult.run.retryCount === undefined || scanResult.run.retryCount < this.maxFailedScanRetryCount) && // retry threshold
                    moment.utc(scanResult.run.timestamp).add(this.failedScanRetryIntervalInMinutes, 'minutes') <= moment.utc() // retry delay
                ) {
                    filteredScanRequests.toQueue.push({ request: scanRequest, result: scanResult, condition: 'retry' });

                    return;
                }
            }),
        );
    }