( providerId: AdProviderId, serverEnv: AdsEnv, logger: Logger, )
| 67 | } |
| 68 | |
| 69 | function createConfiguredProvider( |
| 70 | providerId: AdProviderId, |
| 71 | serverEnv: AdsEnv, |
| 72 | logger: Logger, |
| 73 | ): AdProvider | null { |
| 74 | switch (providerId) { |
| 75 | case 'carbon': |
| 76 | if (!serverEnv.CARBON_ZONE_KEY) { |
| 77 | logger.warn('[ads] CARBON_ZONE_KEY not configured') |
| 78 | return null |
| 79 | } |
| 80 | return createCarbonProvider({ zoneKey: serverEnv.CARBON_ZONE_KEY }) |
| 81 | case 'zeroclick': |
| 82 | if (!serverEnv.ZEROCLICK_API_KEY) { |
| 83 | logger.warn('[ads] ZEROCLICK_API_KEY not configured') |
| 84 | return null |
| 85 | } |
| 86 | return createZeroClickProvider({ apiKey: serverEnv.ZEROCLICK_API_KEY }) |
| 87 | case 'gravity': |
| 88 | if (!serverEnv.GRAVITY_API_KEY) { |
| 89 | logger.warn('[ads] GRAVITY_API_KEY not configured') |
| 90 | return null |
| 91 | } |
| 92 | return createGravityProvider({ apiKey: serverEnv.GRAVITY_API_KEY }) |
| 93 | } |
| 94 | } |
| 95 | |
| 96 | async function persistAdImpressions(params: { |
| 97 | ads: NormalizedAd[] |
no test coverage detected