Skip to content

Commit d23f5e5

Browse files
Merge pull request #474 from PubMatic/nightly_11_july
Custom namespace and action timeout
2 parents c8890db + 62d57f6 commit d23f5e5

17 files changed

+478
-341
lines changed

build.sh

+4-10
Original file line numberDiff line numberDiff line change
@@ -83,16 +83,6 @@ if (task == CREATIVE_TASK) {
8383

8484
shell.cd("../OpenWrap/");
8585

86-
console.log("Executing update-namespace task if identityOnly = 1, => ", config.isIdentityOnly());
87-
88-
if(config.isIdentityOnly()) {
89-
console.log("Updating owpbjs namespace to use ihowpbjs for identity only profiles");
90-
if(shell.exec("time gulp update-namespace").code !== 0) {
91-
shell.echo('Error: Changing owpbjs namespace to use ihowpbjs failed');
92-
shell.exit(1);
93-
}
94-
}
95-
9686

9787
if (argv.mode == "test-build") {
9888
if(shell.exec("gulp testall" + " --mode=" + argv.mode + " --prebidpath=" + prebidRepoPath).code !== 0) {
@@ -115,6 +105,10 @@ if (task == CREATIVE_TASK) {
115105
shell.exit(1);
116106
}
117107

108+
if(shell.exec("time gulp update-namespace").code !== 0) {
109+
shell.echo('Error: Changing custom namespace failed');
110+
shell.exit(1);
111+
}
118112
}
119113

120114
console.timeEnd("--------- STARTED");

gulpfile.js

+40-16
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,8 @@ gulp.task('devbundle', gulp.series('devpack', function () {
395395
var concat = require('gulp-concat');
396396
//var prebidFileName = isIdentityOnly ? '/build/dev/prebidIdhub.js' : '/build/dev/prebid.js';
397397
var prebidFileName = '/build/dev/prebid.js';
398-
return gulp.src([prebidRepoPath + prebidFileName, './build/dev/owt.js'], { allowEmpty: true })
398+
var footerFileName = isIdentityOnly ? './src_new/ih_footer.js' : './src_new/ow_footer.js';
399+
return gulp.src([prebidRepoPath + prebidFileName, './build/dev/owt.js', footerFileName], { allowEmpty: true })
399400
.pipe(concat('owt.js'))
400401
.pipe(gulp.dest('build'));
401402
}));
@@ -405,26 +406,49 @@ gulp.task('bundle-prod', gulp.series('webpack', function () {
405406
var concat = require('gulp-concat');
406407
//var prebidFileName = isIdentityOnly ? '/build/dist/prebidIdhub.js' : '/build/dist/prebid.js';
407408
var prebidFileName = '/build/dist/prebid.js';
408-
return gulp.src([prebidRepoPath + prebidFileName, './build/dist/owt.js'], { allowEmpty: true })
409+
var footerFileName = isIdentityOnly ? './src_new/ih_footer.js' : './src_new/ow_footer.js';
410+
return gulp.src([prebidRepoPath + prebidFileName, './build/dist/owt.js', footerFileName], { allowEmpty: true })
409411
.pipe(concat('owt.min.js'))
410412
.pipe(gulp.dest('build'));
411413
}));
412414

413-
gulp.task('update-namespace', function(){
414-
console.log("In update-namespace isIdentityOnly = " + isIdentityOnly);
415+
416+
function addPattern(patterns, match, replacement) {
417+
if (replacement) {
418+
patterns.push({
419+
match: match,
420+
replacement: replacement
421+
});
422+
}
423+
}
424+
425+
function getPatternsToReplace() {
426+
const { COMMON, CONFIG } = require('./src_new/constants.js');
427+
var patterns = [];
428+
if (isIdentityOnly) {
429+
addPattern(patterns, /ihowpbjs|owpbjs/g, config.getOverrideNamespace(CONFIG.PB_GLOBAL_VAR_NAMESPACE, COMMON.IH_NAMESPACE, COMMON.IH_NAMESPACE));
430+
addPattern(patterns, /IHPWT/g, config.getOverrideNamespace(CONFIG.OW_GLOBAL_VAR_NAMESPACE, COMMON.IH_OW_NAMESPACE, null));
431+
} else {
432+
// Passing null as we don't want to replace the used value(i.e. PWT) with default value(i.e. PWT) as both are same,
433+
addPattern(patterns, /owpbjs/g, config.getOverrideNamespace(CONFIG.PB_GLOBAL_VAR_NAMESPACE, COMMON.PREBID_NAMESPACE, null));
434+
addPattern(patterns, /PWT/g, config.getOverrideNamespace(CONFIG.OW_GLOBAL_VAR_NAMESPACE, COMMON.OPENWRAP_NAMESPACE, null));
435+
}
436+
return patterns;
437+
}
438+
439+
gulp.task('update-namespace', async function () {
415440
console.log("Executing update-namespace - START => ");
416-
//var prebidFileName = isIdentityOnly ? '/build/dist/prebidIdhub.js' : '/build/dist/prebid.js';
417-
var prebidFileName = '/build/dist/prebid.js';
418-
return gulp.src(prebidRepoPath + prebidFileName)
419-
.pipe(replace({
420-
patterns: [
421-
{
422-
match: /owpbjs/g,
423-
replacement: 'ihowpbjs'
424-
}
425-
]
426-
}))
427-
.pipe(gulp.dest(prebidRepoPath+'/build/dist/'));
441+
var patternsToReplace = getPatternsToReplace();
442+
console.log("Patterns to replace => ", patternsToReplace);
443+
if (patternsToReplace.length > 0) {
444+
return gulp.src('build/*.js')
445+
.pipe(replace({
446+
patterns: patternsToReplace
447+
}))
448+
.pipe(gulp.dest('build'));
449+
} else {
450+
console.log("default namespaces(owpbjs and PWT) are using.");
451+
}
428452
});
429453

430454
gulp.task('build-gpt-prod');

src_new/adapters/prebid.js

+8
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ var BID = require("../bid.js");
1010
var util = require("../util.js");
1111
var bidManager = require("../bidManager.js");
1212
var CONF = require("../conf.js");
13+
var COMMON_CONFIG = require("../common.config.js");
1314

1415
var parentAdapterID = CONSTANTS.COMMON.PARENT_ADAPTER_PREBID;
1516

@@ -830,6 +831,11 @@ function assignGdprConfigIfRequired(prebidConfig){
830831
allowAuctionWithoutConsent: CONFIG.getAwc(), // Auction without consent
831832
defaultGdprScope: true
832833
};
834+
var gdprActionTimeout = COMMON_CONFIG.getGdprActionTimeout()
835+
if (gdprActionTimeout) {
836+
util.log("GDPR IS ENABLED, TIMEOUT: " + prebidConfig["consentManagement"]['gdpr']['timeout'] +", ACTION TIMEOUT: "+ gdprActionTimeout);
837+
prebidConfig["consentManagement"]['gdpr']['actionTimeout'] = gdprActionTimeout;
838+
}
833839
}
834840
}
835841

@@ -1287,6 +1293,7 @@ function setPbjsBidderSettingsIfRequired(){
12871293
window[pbNameSpace].bidderSettings = {
12881294
'standard': {
12891295
'suppressEmptyKeys': true, // this boolean flag can be used to avoid sending those empty values to the ad server.
1296+
'storageAllowed': CONF.pwt.localStorageAccess
12901297
}
12911298
};
12921299

@@ -1413,6 +1420,7 @@ function fetchBids(activeSlots){
14131420
},
14141421
timeout: CONFIG.getTimeout() - CONSTANTS.CONFIG.TIMEOUT_ADJUSTMENT
14151422
});
1423+
util.getGeoInfo();
14161424
} else {
14171425
util.log("PreBid js requestBids function is not available");
14181426
return;

src_new/common.config.js

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
var config = require("./conf.js");
2+
var CONSTANTS = require("./constants.js");
3+
4+
exports.getGdprActionTimeout = function() {
5+
var gdprActionTimeout = config[CONSTANTS.CONFIG.COMMON][CONSTANTS.CONFIG.GDPR_ACTION_TIMEOUT];
6+
return gdprActionTimeout ? window.parseInt(gdprActionTimeout) : 0;
7+
};

src_new/conf.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ exports.pwt = {
2424
owv:"v21.4.0",
2525
abTestEnabled:"0",
2626
pubAnalyticsAdapter: "0",
27-
reduceCodeSize:1
27+
reduceCodeSize:1,
28+
pbGlobalVarNamespace: "custPbNamespace",
29+
owGlobalVarNamespace: "NIT",
30+
localStorageAccess: true // Added new field for allow local storage feature
2831
};
2932

3033
// singleImpression is used to enable feature of sending single impression for multiple size ad slot earlier there were multiple impression for multiple sizes

src_new/config.js

+9
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,15 @@ exports.getAwc = function () {
144144
return awc === "1";
145145
};
146146

147+
exports.getOverrideNamespace = function(configKey, defaultName, returnValueInCaseMissingNamespace) {
148+
var pbNamespace = config[CONSTANTS.CONFIG.COMMON][configKey];
149+
if (pbNamespace) {
150+
return pbNamespace === defaultName ? returnValueInCaseMissingNamespace : pbNamespace;
151+
} else {
152+
return returnValueInCaseMissingNamespace;
153+
}
154+
}
155+
147156
/* start-test-block */
148157
exports.addPrebidAdapter = addPrebidAdapter;
149158
/* end-test-block */

src_new/constants.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ exports.COMMON = {
2424
"BID_ID": "owbidid",
2525
"AD_SERVER_CURRENCY": "adServerCurrency",
2626
"SINGLE_IMPRESSION": "singleImpression",
27+
"OPENWRAP_NAMESPACE": "PWT",
28+
"IH_OW_NAMESPACE": "IHPWT",
2729
"PREBID_NAMESPACE": "owpbjs",
2830
"IH_NAMESPACE": "ihowpbjs",
2931
"ENABLE_USER_ID": "identityEnabled",
@@ -109,7 +111,10 @@ exports.CONFIG = {
109111
"AB_TEST_ENABLED": "abTestEnabled",
110112
"TIMEOUT_ADJUSTMENT": 50,
111113
"SSO_ENABLED": "ssoEnabled",
112-
"FLOOR_SOURCE": "floorSource"
114+
"FLOOR_SOURCE": "floorSource",
115+
"GDPR_ACTION_TIMEOUT": "gdprActionTimeout",
116+
"PB_GLOBAL_VAR_NAMESPACE": "pbGlobalVarNamespace",
117+
"OW_GLOBAL_VAR_NAMESPACE": "owGlobalVarNamespace"
113118
};
114119

115120
exports.METADATA_MACROS = {

src_new/controllers/idhub.js

+6
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
var CONFIG = require("../config.idhub.js");
66
var CONSTANTS = require("../constants.js");
77
var util = require("../util.idhub.js");
8+
var COMMON_CONFIG = require("../common.config.js");
89
var refThis = this;
910
var pbNameSpace = CONFIG.isIdentityOnly() ? CONSTANTS.COMMON.IH_NAMESPACE : CONSTANTS.COMMON.PREBID_NAMESPACE;
1011

@@ -47,6 +48,11 @@ refThis.setConfig = function(){
4748
allowAuctionWithoutConsent: CONFIG.getAwc(),
4849
defaultGdprScope: true
4950
};
51+
var gdprActionTimeout = COMMON_CONFIG.getGdprActionTimeout()
52+
if (gdprActionTimeout) {
53+
util.log("GDPR IS ENABLED, TIMEOUT: " + prebidConfig["consentManagement"]['gdpr']['timeout'] +", ACTION TIMEOUT: "+ gdprActionTimeout);
54+
prebidConfig["consentManagement"]['gdpr']['actionTimeout'] = gdprActionTimeout;
55+
}
5056
}
5157

5258
if (CONFIG.getCCPA()) {

0 commit comments

Comments
 (0)