import { StepBuilder } from "../steps/stepBuilder"; import { Step } from "../steps/step"; import AllowedCampaignGroupsStep from "./allowedCampaignGroups/allowedCampaignGroups.step"; import DVFraudStep from "./dvfraud/dvFraud.step"; import { CategoryProviderType } from "../categories/categoryProvider"; import AudienceHashMap from "../services/scoringSystem/audienceHashMap.service"; import CallToActionHashMap from "../services/scoringSystem/callToActionHashMap.service"; import BrandSafetyStep from "./prebid/brandSafety.step"; import BypassNormalFlowStep from "./bypassNormalFlow/bypassNormalFlow.step"; import CampaignSizeStep from "./campaignSize/campaignSize.step"; import OrderingStep from "./ordering/ordering.step"; import PriorityStep from "./priority/priority.step"; import MarketplaceResponseStep from "./programmatic/marketplaceResponse.step"; import ProgrammaticEnabledStep from "./programmatic/programmaticEnabled.step"; import ProgrammaticIVTStep from "./programmatic/programmaticIVT.step"; import ProgrammaticResponseStep from "./programmatic/programmaticResponse.step"; import SpeedThresholdStep from "./speedThreshold/speedThreshold.step"; import { ContextService } from "../services/targeting/ContextService"; import { CampaignModel } from "../models/CampaignModel"; import { DVFraudService } from "../services/dvFraud.service"; import { MsAuctionService } from "../services/auction/MsAuction.service"; import { CampaignGroup } from "../models/request.model"; import SpeedService from "../services/speed.service"; import FallbackStep from "./fallback/fallback.step"; import { config } from "../utils/config"; import { createDeliveryCampaignsClient } from "../grpc/base-client"; import YieldStep from "./yield/yield.step"; import BidfloorStep from "./bidfloor/bidfloor.step"; import ExternalBlacklistStep from "./externalBlacklist/externalBlacklist.step"; import { ExternalBlacklistService } from "../services/ExternalBlacklist.service"; import BrandSuitabilityStep from "./prebid/brandSuitability.step"; import PublisherFraudStep from "./prebid/publisherFraud.step"; import DeviceFraudStep from "./prebid/deviceFraud.step"; export class StepFactory { readonly dvFraudStep: Step; readonly brandSafetyDvStep: Step; readonly brandSafetyIasStep: Step; readonly deviceFraudIasStep: Step; readonly publisherFraudIasStep: Step; readonly brandSuitabilityIasStep: Step; readonly orderingStep: Step; readonly speedThresholdStep: Step; readonly priorityStep: Step; readonly programmaticEnabledStep: Step; readonly programmaticIVTStep: Step; public programmaticResponseStep?: Step; readonly campaignSizeStep: Step; readonly bypassNormalFlowStep: Step; public marketplaceStep?: Step; readonly fallbackStep: Step; readonly yieldStep: Step; readonly bidFloorStep: Step; public externalBlacklistStep?: Step; constructor( campaignModel: CampaignModel, contextService: ContextService, dvFraudService: DVFraudService, speedService: SpeedService ) { this.dvFraudStep = new StepBuilder(new DVFraudStep(campaignModel, dvFraudService)) .kafka() .metrics() .build(); this.deviceFraudIasStep = new StepBuilder( new DeviceFraudStep(campaignModel, CategoryProviderType.IAS) ) .kafka() .metrics() .build(); this.publisherFraudIasStep = new StepBuilder( new PublisherFraudStep(campaignModel, CategoryProviderType.IAS, true) ) .kafka() .metrics() .build(); this.brandSafetyDvStep = new StepBuilder( new BrandSafetyStep(campaignModel, CategoryProviderType.DV, false) ) .kafka() .metrics() .build(); this.brandSafetyIasStep = new StepBuilder( new BrandSafetyStep(campaignModel, CategoryProviderType.IAS, true) ) .kafka() .metrics() .build(); this.brandSuitabilityIasStep = new StepBuilder( new BrandSuitabilityStep(campaignModel, CategoryProviderType.IAS, true) ) .kafka() .metrics() .build(); this.orderingStep = new StepBuilder( new OrderingStep( campaignModel, contextService, speedService, AudienceHashMap.getInstance(), CallToActionHashMap.getInstance() ) ) .kafka() .metrics() .build(); this.speedThresholdStep = new StepBuilder(new SpeedThresholdStep(speedService)) .kafka() .metrics() .build(); this.priorityStep = new StepBuilder(new PriorityStep(campaignModel)).metrics().build(); this.campaignSizeStep = new StepBuilder(new CampaignSizeStep()).kafka().metrics().build(); this.programmaticEnabledStep = new StepBuilder(new ProgrammaticEnabledStep()).metrics().build(); this.programmaticIVTStep = new StepBuilder(new ProgrammaticIVTStep()).kafka().metrics().build(); this.bypassNormalFlowStep = new StepBuilder(new BypassNormalFlowStep()) .kafka() .metrics() .build(); this.fallbackStep = new StepBuilder(new FallbackStep()).kafka().metrics().build(); this.yieldStep = new StepBuilder( new YieldStep(createDeliveryCampaignsClient(config.MS_YIELD_HOST)) ) .kafka() .metrics() .build(); this.bidFloorStep = new StepBuilder(new BidfloorStep(campaignModel)).kafka().metrics().build(); } public initExternalBlacklist(externalBlacklistService: ExternalBlacklistService) { this.externalBlacklistStep = new StepBuilder( new ExternalBlacklistStep(externalBlacklistService) ) .kafka() .metrics() .build(); } public initProgrammatic(msAuctionService: MsAuctionService) { this.programmaticResponseStep = new StepBuilder(new ProgrammaticResponseStep(msAuctionService)) .kafka() .metrics() .build(); this.marketplaceStep = new StepBuilder(new MarketplaceResponseStep(msAuctionService)) .kafka() .metrics() .build(); } public getAllowedCampaignGroupsStep(allowedCampaignGroups: CampaignGroup): Step { return new StepBuilder(new AllowedCampaignGroupsStep(allowedCampaignGroups)) .kafka() .metrics() .build(); } }