Skip to content

Luponmedia Bid Adapter: improve fallback bid alignment and dynamic server resolution #13020

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

Open
wants to merge 31 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
a120e62
luponmedia adapter update - removed siteId, new keyId structure, buil…
milosandrejic Mar 3, 2025
2be10a7
luponmedia: removed console logs
milosandrejic Mar 3, 2025
7f22c24
LuponMedia bid adapter: keyId regex change, change endpoint url if th…
milosandrejic Mar 3, 2025
1b81c7a
LuponMedia: removed onBidWon and sendWinningsToServer
milosandrejic Mar 3, 2025
06644cd
Luponmedia: keyId regex change
milosandrejic Mar 3, 2025
169bf16
Luponmedia: siteId backward compatibility
milosandrejic Mar 3, 2025
087cf22
Luponmedia: removed adslot
milosandrejic Mar 3, 2025
63afa1e
Luponmedia: removed imp.context
milosandrejic Mar 3, 2025
0af76fa
Luponmedia: imp.ext.luponmedia initialization fix
milosandrejic Mar 3, 2025
3b2afe8
Luponmedia: buildRequests tests cleanup
milosandrejic Mar 4, 2025
6cd9513
Luponmedia: check for dynamicAdBoost
milosandrejic Mar 5, 2025
a1ed918
Luponmedia: submodule name fix
milosandrejic Mar 5, 2025
a491448
Luponmedia: removed unused functions, use fromOrtb converter instead …
milosandrejic Mar 13, 2025
ef3a405
Luponmedia: code cleanup
milosandrejic Mar 13, 2025
533d270
Luponmedia: prevent false sync warning
milosandrejic Mar 13, 2025
e285f33
Luponmedia: use ortb converter for interpretResponse, minor code refa…
milosandrejic Mar 14, 2025
a7c38ef
Luponmedia: improving test coverage
milosandrejic Mar 15, 2025
2e5376b
dynamicAdBoost - removed all params, keyId will be added autoamtically
milosandrejic Apr 10, 2025
01e4095
docs change
milosandrejic Apr 10, 2025
77fffeb
Dynamic Ad Boost - removed unnecessary params
milosandrejic Apr 11, 2025
58ebf45
Luponmedia - interpretRespose fallback logic
milosandrejic Apr 11, 2025
b62461a
Luponmedia Bid Adapter - more clearer interpret response logic
milosandrejic Apr 12, 2025
8875599
Luponmedia - interpret response fallback more props added
milosandrejic Apr 12, 2025
6cb14e4
Merge branch 'prebid:master' into master
milosandrejic Apr 13, 2025
cdb1a8e
Luponmedia - fallback bids from the store, tests and final tweaks
milosandrejic Apr 13, 2025
9ba8355
Luponmedia - ensure that only valid bids stays in store, also remove …
milosandrejic Apr 14, 2025
3ff1e89
Merge branch 'prebid:master' into master
milosandrejic Apr 15, 2025
f86360c
Luponmedia bid adapter final tweaks
milosandrejic Apr 22, 2025
1043bf8
Merge branch 'prebid:master' into master
milosandrejic Apr 22, 2025
08905ed
Merge branch 'prebid:master' into master
milosandrejic May 12, 2025
436fc84
removed custom caching to ensure full compliance
milosandrejic May 12, 2025
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
49 changes: 16 additions & 33 deletions modules/dynamicAdBoostRtdProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import { submodule } from '../src/hook.js'
import { loadExternalScript } from '../src/adloader.js';
import { getGlobal } from '../src/prebidGlobal.js';
import { deepAccess, deepSetValue, isEmptyStr } from '../src/utils.js';
import { deepAccess, deepSetValue } from '../src/utils.js';
import { MODULE_TYPE_RTD } from '../src/activities/modules.js';

/**
Expand All @@ -29,55 +29,38 @@ let dabStartTime;
// Array of div IDs to track
let dynamicAdBoostAdUnits = {};

function init(config, userConsent) {
function init() {
dabStartDate = new Date();
dabStartTime = dabStartDate.getTime();
if (!CLIENT_SUPPORTS_IO) {
return false;
}
// Create an Intersection Observer instance
observer = new IntersectionObserver(dabHandleIntersection, dabOptions);
if (config.params.keyId) {
let keyId = config.params.keyId;
if (keyId && !isEmptyStr(keyId)) {
let dabDivIdsToTrack = config.params.adUnits;
let dabInterval = setInterval(function() {
// Observe each div by its ID
dabDivIdsToTrack.forEach(divId => {
let div = document.getElementById(divId);
if (div) {
observer.observe(div);
}
});
let keyId = 'rtd-' + window.location.hostname;

let dabDateNow = new Date();
let dabTimeNow = dabDateNow.getTime();
let dabElapsedSeconds = Math.floor((dabTimeNow - dabStartTime) / 1000);
let elapsedThreshold = 30;
if (config.params.threshold) {
elapsedThreshold = config.params.threshold;
}
if (dabElapsedSeconds >= elapsedThreshold) {
clearInterval(dabInterval); // Stop
loadLmScript(keyId);
}
}, 1000);
let dabInterval = setInterval(function() {
let dabDateNow = new Date();
let dabTimeNow = dabDateNow.getTime();
let dabElapsedSeconds = Math.floor((dabTimeNow - dabStartTime) / 1000);
let elapsedThreshold = 0;

return true;
if (dabElapsedSeconds >= elapsedThreshold) {
clearInterval(dabInterval); // Stop
loadLmScript(keyId);
}
}
return false;
}, 1000);

return true;
}

function loadLmScript(keyId) {
let viewableAdUnits = Object.keys(dynamicAdBoostAdUnits);
let viewableAdUnitsCSV = viewableAdUnits.join(',');
const scriptUrl = `${SCRIPT_URL}/${keyId}.js?viewableAdUnits=${viewableAdUnitsCSV}`;
const scriptUrl = `${SCRIPT_URL}/${keyId}.js`;
loadExternalScript(scriptUrl, MODULE_TYPE_RTD, MODULE_NAME);
observer.disconnect();
}

function getBidRequestData(reqBidsConfigObj, callback, config, userConsent) {
function getBidRequestData(reqBidsConfigObj, callback) {
const reqAdUnits = reqBidsConfigObj.adUnits || getGlobal().adUnits;

if (Array.isArray(reqAdUnits)) {
Expand Down
7 changes: 1 addition & 6 deletions modules/dynamicAdBoostRtdProvider.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,7 @@ pbjs.setConfig(
auctionDelay: 2000,
dataProviders: [
{
name: "dynamicAdBoost",
params: {
keyId: "[PROVIDED_KEY]", // Your provided Dynamic AdBoost keyId
adUnits: ["allowedAdUnit1", "allowedAdUnit2"],
threshold: 35 // optional
}
name: "dynamicAdBoost"
}
]
}
Expand Down
Loading