Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from prebid:master #1616

Merged
merged 53 commits into from
Sep 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
4d06091
Bump ws, @wdio/browserstack-service, @wdio/cli and @wdio/local-runner…
dependabot[bot] Aug 20, 2024
825fc6e
Smartadserver Bid Adapter : add DSA support (#12141)
eszponder Aug 21, 2024
8a544ca
Change consent default param name (#12154)
danijel-ristic Aug 21, 2024
1231b4c
Freedom Ad Network Bid Adapter: initial release (#12153)
freedomadnetworkdev Aug 21, 2024
8fe3e53
deleted bidder name check (#12157)
OctaviaS20 Aug 21, 2024
95c8118
Connatix Bid Adapter : support eids (#12142)
OctaviaS20 Aug 21, 2024
23ac002
PrebidServer Bid Adapter : update to use gloablly defined alias or s2…
mmoschovas Aug 22, 2024
84d3238
PubMatic Bid Adapter MD : update configuration document for user sync…
pm-azhar-mulla Aug 22, 2024
9f8829e
Paapi tools: add constants for importing (#12160)
patmmccann Aug 22, 2024
54230fb
Sharethrough Bid Adapter: support battr property in bid requests (#12…
jefftmahoney Aug 22, 2024
5bb13cf
Prebid 9.11.0 release
prebidjs-release Aug 22, 2024
3b86b5a
Increment version to 9.12.0-pre
prebidjs-release Aug 22, 2024
cd6681c
ConnectAd Bid Adapter: Sync endpoint Update (#11650)
rtuschkany Aug 23, 2024
3c30238
Sovrn bid adapter add ortb2 device (#11784)
jwrosewell Aug 23, 2024
99e16eb
Update connectadBidAdapter.js (#12170)
patmmccann Aug 23, 2024
5241469
IntentIq Analytics Adapter: add pcid value to the payload (#12169)
DimaIntentIQ Aug 23, 2024
769e7fe
ssp_geniee Bid Adapter : initial release (#12131)
Takamasa-Murano Aug 23, 2024
87e198f
Add content language extraction in bidderUtils (#12172)
saar120 Aug 25, 2024
8932942
Incrx Bid Adapter : add incrementX banner and vast (#12115)
Prebid-Vertoz Aug 28, 2024
06ead4c
Debugging module: fix bug where mocked bidders always time out with a…
dgirardi Aug 28, 2024
dd35fd8
Edge226 Bid Adapter : updates to use the teqblaze library (#12178)
Edge226Ads Aug 28, 2024
76e74a7
Playdigo Bid Adapter : add GVLID (#12179)
Yanivplaydigo Aug 28, 2024
14b3b35
null check config.rate and config.defaultRate (#12175)
olafbuitelaar Aug 29, 2024
acdeb27
Add COPPA compliance check in bid request data (#12190)
hellyalpern Aug 29, 2024
7911ddd
Adagio Analytics Adapter: add bidders code (#12188)
GodefroiRoussel Aug 29, 2024
541888a
Dailymotion bid adapter: add publisher restrictions in consent enforc…
sebmil-daily Aug 29, 2024
ac5cc64
QT bid adapter: add gvlid (#12189)
qt-io Aug 29, 2024
d690c86
AdagioAnalyticsAdapter: fix `rtdUid` getter (#12187)
osazos Aug 29, 2024
b7efc5a
PubxaiAnalyticsAdapter Update: Added an extra field in the auction pa…
pnhegde Aug 29, 2024
360c3ea
Greenbids Analytics : send cpm on any valid bid (#12174)
AlexisBRENON Aug 30, 2024
f0b45e8
Invibes Bid Adapter: added us consent support (#12183)
danielminvibes Sep 3, 2024
fe19361
IntentIQ Analytics Adapter: browser blacklist (#12119)
eyvazahmadzada Sep 3, 2024
25667cd
symitriDapRtdProvider : Hash user identity before using it (#12129)
mp4symitri Sep 3, 2024
56b0985
Jsdoc Lint: fix types in modules userId (#12196)
someden Sep 3, 2024
9f1bf51
OMS Bid Adapter: add user syncs, test coverage and update documentati…
siminkovladyslav Sep 3, 2024
b4f6df6
Bump webpack from 5.92.0 to 5.94.0 (#12195)
dependabot[bot] Sep 3, 2024
a8b7e98
AdMatic Bid Adapter : default currency removed (#12198)
fatihkaya84 Sep 3, 2024
fe190c3
RTB House Bid Adapter: paapi response interpreter uses additional con…
piotrj-rtbh Sep 3, 2024
c2fdee7
Eskimi Bid Adapter: Endpoint adjustments and cookie-sync endpoint (#1…
myDisconnect Sep 4, 2024
213caa7
Rubicon Bid Adapter tests: migrate querystring to URLSearchParams (#1…
apukh-magnite Sep 4, 2024
9c16cfb
Core: Truncating IPs using geo activity (#12107)
mkomorski Sep 4, 2024
675cf35
Core: fix bug where custom priceGranularity does not work with setBid…
dgirardi Sep 5, 2024
c82ce31
Fix if dot is in adUnitCode (#12206)
robertrmartinez Sep 5, 2024
034bd70
Prebid 9.12.0 release
prebidjs-release Sep 5, 2024
d9676ce
Increment version to 9.13.0-pre
prebidjs-release Sep 5, 2024
a6fc47e
Intentiq Analytics: Referrer Info Update (#12155)
eyvazahmadzada Sep 5, 2024
1d094e9
Remove duplicate event call for actionDebug event (#12193)
pm-komal-kumari Sep 6, 2024
48916ae
Yahoo Ads Bid Adapter: Fix to only set bid response renderer for vide…
zach-bowman Sep 6, 2024
5b18978
PBS Adapter: Add PBS_ANALYTICS Event (#12044)
spotxslagle Sep 9, 2024
78fa92e
Tappx Bid Adapter : fix multiple format sizes (#12209)
prebidtappx Sep 9, 2024
ff822b8
feat: include all context api response fields in ortb2site.ext.data o…
MrAAAgent Sep 9, 2024
f728178
Check for valid data before adding to tracker (#12212)
pm-azhar-mulla Sep 9, 2024
1d2b583
Refactor: Consolidate shared adapter methods into dspxUtils, reduce r…
onlsol Sep 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 132 additions & 0 deletions integrationExamples/gpt/symitridap_segments_example.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
<html>
<head>
<script async src="../../build/dev/prebid.js"></script>
<script async src="https://www.googletagservices.com/tag/js/gpt.js"></script>
<script>
var FAILSAFE_TIMEOUT = 3300;
var PREBID_TIMEOUT = 2000;

var adUnits = [{
code: 'div-gpt-ad-1460505748561-0',
mediaTypes: {
banner: {
sizes: [[300, 250], [300,600]],
}
},
// Replace this object to test a new Adapter!
bids: [
{
bidder: 'appnexus',
params: {
placementId: 13144370
}
},
{
bidder: 'sovrn',
params: {
tagid: 1
}
}
]

}];

var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];

</script>

<script>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
googletag.cmd.push(function() {
googletag.pubads().disableInitialLoad();
});

pbjs.que.push(function() {
pbjs.setConfig({
debug: true,
ortb2: {
user: {
data: [
// DAP segment taxonomy inserted here
]
},
site: {
ext: {
data: {
// DAP SAID will be inserted here
}
}
},
imp: {
ext: {
data: {
// DAP SAID will be inserted here
}
}
}
},
realTimeData: {
auctionDelay: 2000,
dataProviders: [
{
name: "symitriDap",
waitForIt: true,
params: {
apiHostname: "api.dap.symitri.net",
apiVersion: "x1",
domain: "prebid.org",
identityValue: "test@invalid.com",
identityType: "hid"
}
}
]
}
});
pbjs.addAdUnits(adUnits);
pbjs.requestBids({
bidsBackHandler: sendAdserverRequest,
timeout: PREBID_TIMEOUT
});
});

function sendAdserverRequest() {
if (pbjs.adserverRequestSent) return;
pbjs.adserverRequestSent = true;
googletag.cmd.push(function() {
pbjs.que.push(function() {
pbjs.setTargetingForGPTAsync();
googletag.pubads().refresh();
});
});
}

setTimeout(function() {
sendAdserverRequest();
}, FAILSAFE_TIMEOUT);

</script>

<script>
googletag.cmd.push(function () {
googletag.defineSlot('/19968336/header-bid-tag-0', [[300, 250], [300, 600]], 'div-gpt-ad-1460505748561-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script>

<script>!function(a){var e="https://s.go-mpulse.net/boomerang/",t="addEventListener";if("False"=="True")a.BOOMR_config=a.BOOMR_config||{},a.BOOMR_config.PageParams=a.BOOMR_config.PageParams||{},a.BOOMR_config.PageParams.pci=!0,e="https://s2.go-mpulse.net/boomerang/";if(window.BOOMR_API_key="5G3ZS-8L7PG-U23WM-5CA4K-LQ3YP",function(){function n(e){a.BOOMR_onload=e&&e.timeStamp||(new Date).getTime()}if(!a.BOOMR||!a.BOOMR.version&&!a.BOOMR.snippetExecuted){a.BOOMR=a.BOOMR||{},a.BOOMR.snippetExecuted=!0;var i,_,o,r=document.createElement("iframe");if(a[t])a[t]("load",n,!1);else if(a.attachEvent)a.attachEvent("onload",n);r.src="javascript:void(0)",r.title="",r.role="presentation",(r.frameElement||r).style.cssText="width:0;height:0;border:0;display:none;",o=document.getElementsByTagName("script")[0],o.parentNode.insertBefore(r,o);try{_=r.contentWindow.document}catch(O){i=document.domain,r.src="javascript:var d=document.open();d.domain='"+i+"';void(0);",_=r.contentWindow.document}_.open()._l=function(){var a=this.createElement("script");if(i)this.domain=i;a.id="boomr-if-as",a.src=e+"5G3ZS-8L7PG-U23WM-5CA4K-LQ3YP",BOOMR_lstart=(new Date).getTime(),this.body.appendChild(a)},_.write("<bo"+'dy onload="document._l();">'),_.close()}}(),"".length>0)if(a&&"performance"in a&&a.performance&&"function"==typeof a.performance.setResourceTimingBufferSize)a.performance.setResourceTimingBufferSize();!function(){if(BOOMR=a.BOOMR||{},BOOMR.plugins=BOOMR.plugins||{},!BOOMR.plugins.AK){var e=""=="true"?1:0,t="",n="ghh4w4yxem66iyi6ijxa-f-a8f1ed317-clientnsv4-s.akamaihd.net",i="false"=="true"?2:1,_={"ak.v":"32","ak.cp":"540505","ak.ai":parseInt("351538",10),"ak.ol":"0","ak.cr":17,"ak.ipv":4,"ak.proto":"http/1.1","ak.rid":"322de403","ak.r":36326,"ak.a2":e,"ak.m":"dscx","ak.n":"essl","ak.bpcip":"49.207.203.0","ak.cport":5172,"ak.gh":"23.47.149.85","ak.quicv":"","ak.tlsv":"tls1.2","ak.0rtt":"","ak.csrc":"-","ak.acc":"bbr","ak.t":"1629373038","ak.ak":"hOBiQwZUYzCg5VSAfCLimQ==admFPBlxVf0VKeanKFKUThzq+or23aIaVFP5DBXpeOGEuvD5mQz0UZbvK242Y8cupS91bsNaM7uJT3/O00EszGTxlFhkv439YkTWfyegvqVlJhcrZ7jcRkIoyrmjoBqDZoF0WaG4rhwmNzkKEv6T1noRYwEWwRHOG8p7osPXWy5as6KkmhOYUiYk8S5hQj+HFzhYI5YUTx+8urmHdpVIDBkramcrT2V89mb0cH5L2bSGS2hahAA3Kkf+0Dul7r5hDFQaVTf17e4oKdM1G8cKVF5LGRxRl3v4Rn6tBJ+fjrJ7XYQWV30w1LPwcAmSfRX8iTCK4xzHwG1fwDFHb5tWVsxHeEkRgNN3/KhnrCjxKtaROjJeWypJf/rjn1HWHwy7uVVsP9f/HRN3drCCkEvJBmu6yi0jzFFCoeEkbUEoq+8=","ak.pv":"396","ak.dpoabenc":"","ak.tf":i};if(""!==t)_["ak.ruds"]=t;var o={i:!1,av:function(e){var t="http.initiator";if(e&&(!e[t]||"spa_hard"===e[t]))_["ak.feo"]=void 0!==a.aFeoApplied?1:0,BOOMR.addVar(_)},rv:function(){var a=["ak.bpcip","ak.cport","ak.cr","ak.csrc","ak.gh","ak.ipv","ak.m","ak.n","ak.ol","ak.proto","ak.quicv","ak.tlsv","ak.0rtt","ak.r","ak.acc","ak.t","ak.tf"];BOOMR.removeVar(a)}};BOOMR.plugins.AK={akVars:_,akDNSPreFetchDomain:n,init:function(){if(!o.i){var a=BOOMR.subscribe;a("before_beacon",o.av,null,null),a("onbeacon",o.rv,null,null),o.i=!0}return this},is_complete:function(){return!0}}}}()}(window);</script></head>

<body>
<h2>Prebid.js Test</h2>
<h5>Div-1</h5>
<div id='div-gpt-ad-1460505748561-0'>
<script type='text/javascript'>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1460505748561-0'); });
</script>
</div>
<h5>Segments Sent to Bidding Adapter</h5>
<div id="user-segments"></div>
</body>
</html>
2 changes: 1 addition & 1 deletion libraries/creative-renderer-display/renderer.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion libraries/creative-renderer-native/renderer.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

72 changes: 72 additions & 0 deletions libraries/detectBrowserUtils/detectBrowserUtils.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
import { logError } from '../../src/utils.js';

/**
* Detects the browser using either userAgent or userAgentData
* @return {string} The name of the detected browser or 'unknown' if unable to detect
*/
export function detectBrowser() {
try {
if (navigator.userAgent) {
return detectBrowserFromUserAgent(navigator.userAgent);
} else if (navigator.userAgentData) {
return detectBrowserFromUserAgentData(navigator.userAgentData);
}
} catch (error) {
logError('Error detecting browser:', error);
}
return 'unknown';
}

/**
* Detects the browser from the user agent string
* @param {string} userAgent - The user agent string from the browser
* @return {string} The name of the detected browser or 'unknown' if unable to detect
*/
export function detectBrowserFromUserAgent(userAgent) {
const browserRegexPatterns = {
opera: /Opera|OPR/,
edge: /Edg/,
chrome: /Chrome|CriOS/,
safari: /Safari/,
firefox: /Firefox/,
ie: /MSIE|Trident/,
};

// Check for Chrome first to avoid confusion with Safari
if (browserRegexPatterns.chrome.test(userAgent)) {
return 'chrome';
}

// Now we can safely check for Safari
if (browserRegexPatterns.safari.test(userAgent) && !browserRegexPatterns.chrome.test(userAgent)) {
return 'safari';
}

// Check other browsers
for (const browser in browserRegexPatterns) {
if (browserRegexPatterns[browser].test(userAgent)) {
return browser;
}
}

return 'unknown';
}

/**
* Detects the browser from the NavigatorUAData object
* @param {NavigatorUAData} userAgentData - The user agent data object from the browser
* @return {string} The name of the detected browser or 'unknown' if unable to detect
*/
export function detectBrowserFromUserAgentData(userAgentData) {
const brandNames = userAgentData.brands.map(brand => brand.brand);

if (brandNames.includes('Microsoft Edge')) {
return 'edge';
} else if (brandNames.includes('Opera')) {
return 'opera';
} else if (brandNames.some(brand => brand === 'Chromium' || brand === 'Google Chrome')) {
return 'chrome';
}

return 'unknown';
}
Loading
Loading