diff --git a/modules/airgridRtdProvider.js b/modules/airgridRtdProvider.js index c94a71eecde..6af53a9094a 100644 --- a/modules/airgridRtdProvider.js +++ b/modules/airgridRtdProvider.js @@ -12,8 +12,9 @@ import { deepAccess, } from '../src/utils.js'; import { getGlobal } from '../src/prebidGlobal.js'; -import {getStorageManager} from '../src/storageManager.js'; -import {MODULE_TYPE_RTD} from '../src/activities/modules.js'; +import { getStorageManager } from '../src/storageManager.js'; +import { loadExternalScript } from '../src/adloader.js'; +import { MODULE_TYPE_RTD } from '../src/activities/modules.js'; const MODULE_NAME = 'realTimeData'; const SUBMODULE_NAME = 'airgrid'; @@ -25,6 +26,11 @@ export const storage = getStorageManager({ moduleName: SUBMODULE_NAME, }); +function getModuleUrl(accountId) { + const path = accountId ?? 'sdk'; + return `https://cdn.edkt.io/${path}/edgekit.min.js`; +} + /** * Attach script tag to DOM * @param {Object} rtdConfig @@ -33,19 +39,12 @@ export const storage = getStorageManager({ export function attachScriptTagToDOM(rtdConfig) { var edktInitializor = (window.edktInitializor = window.edktInitializor || {}); if (!edktInitializor.invoked) { - edktInitializor.invoked = true; edktInitializor.accountId = rtdConfig.params.accountId; edktInitializor.publisherId = rtdConfig.params.publisherId; edktInitializor.apiKey = rtdConfig.params.apiKey; - edktInitializor.load = function (e) { - var p = e || 'sdk'; - var n = document.createElement('script'); - n.type = 'module'; - n.async = true; - n.src = 'https://cdn.edkt.io/' + p + '/edgekit.min.js'; - document.getElementsByTagName('head')[0].appendChild(n); - }; - edktInitializor.load(edktInitializor.accountId); + edktInitializor.invoked = true; + const moduleSrc = getModuleUrl(rtdConfig.params.accountId); + loadExternalScript(moduleSrc, SUBMODULE_NAME); } } diff --git a/src/adloader.js b/src/adloader.js index 62078293884..3aae348d106 100644 --- a/src/adloader.js +++ b/src/adloader.js @@ -23,6 +23,7 @@ const _approvedLoadExternalJSList = [ 'aaxBlockmeter', 'confiant', 'arcspan', + 'airgrid', 'clean.io' ] diff --git a/test/spec/modules/airgridRtdProvider_spec.js b/test/spec/modules/airgridRtdProvider_spec.js index c587ef1a133..ea019b8a898 100644 --- a/test/spec/modules/airgridRtdProvider_spec.js +++ b/test/spec/modules/airgridRtdProvider_spec.js @@ -2,6 +2,7 @@ import { config } from 'src/config.js'; import { deepAccess } from 'src/utils.js'; import { getAdUnits } from '../../fixtures/fixtures.js'; import * as agRTD from 'modules/airgridRtdProvider.js'; +import { loadExternalScript } from '../../../src/adloader.js'; const MATCHED_AUDIENCES = ['travel', 'sport']; const RTD_CONFIG = { @@ -40,6 +41,7 @@ describe('airgrid RTD Submodule', function () { expect(agRTD.airgridSubmodule.init(RTD_CONFIG.dataProviders[0])).to.equal( true ); + expect(loadExternalScript.called).to.be.true }); it('should attach script to DOM with correct config', function () {