import { ChoiceRequest } from "../../models"; import { ExternalBlacklistService } from "../../services/ExternalBlacklist.service"; import logger from "../../utils/logger"; import { AbstractStep } from "../abstractStep"; import { StepResult } from "../stepResult"; export default class ExternalBlacklistStep extends AbstractStep { constructor(private readonly externalBlacklistService: ExternalBlacklistService) { super("external_blacklist"); } async run(request: ChoiceRequest): Promise { const result: StepResult = new StepResult(); logger.debug(() => `[BLACKLIST_EXTERNAL] ${request.campaigns.map((c) => c.id)}`); const passingCampaigns = request.campaigns.filter( (c) => !this.externalBlacklistService.isBlacklisted(c.id) ); result.passCampaigns(...passingCampaigns); return result; } }