From 727036ef0baed994e26aa64df130f3a6ecb2d845 Mon Sep 17 00:00:00 2001 From: aszydlo Date: Fri, 7 Nov 2025 10:41:43 +0100 Subject: [PATCH 1/2] moved raspUtils into dasBidAdapter.js --- libraries/raspUtils/raspUtils.js | 64 ------------------------------ modules/dasBidAdapter.js | 67 ++++++++++++++++++++++++++++++-- 2 files changed, 64 insertions(+), 67 deletions(-) delete mode 100644 libraries/raspUtils/raspUtils.js diff --git a/libraries/raspUtils/raspUtils.js b/libraries/raspUtils/raspUtils.js deleted file mode 100644 index 4b72cc651fc..00000000000 --- a/libraries/raspUtils/raspUtils.js +++ /dev/null @@ -1,64 +0,0 @@ -import { deepAccess } from '../../src/utils.js'; - -const GDE_SCRIPT_URL = 'https://ocdn.eu/adp/static/embedgde/latest/bundle.min.js'; -const GDE_PARAM_PREFIX = 'gde_'; -const REQUIRED_GDE_PARAMS = [ - 'gde_subdomena', - 'gde_id', - 'gde_stparam', - 'gde_fastid', - 'gde_inscreen' -]; - -export function parseNativeResponse(ad) { - if (!(ad.data?.fields && ad.data?.meta)) { - return false; - } - - const { click, Thirdpartyimpressiontracker, Thirdpartyimpressiontracker2, thirdPartyClickTracker2, imp, impression, impression1, impressionJs1, image, Image, title, leadtext, url, Calltoaction, Body, Headline, Thirdpartyclicktracker, adInfo, partner_logo: partnerLogo } = ad.data.fields; - - const { dsaurl, height, width, adclick } = ad.data.meta; - const emsLink = ad.ems_link; - const link = adclick + (url || click); - const nativeResponse = { - sendTargetingKeys: false, - title: title || Headline || '', - image: { - url: image || Image || '', - width, - height - }, - icon: { - url: partnerLogo || '', - width, - height - }, - clickUrl: link, - cta: Calltoaction || '', - body: leadtext || Body || '', - body2: adInfo || '', - sponsoredBy: deepAccess(ad, 'data.meta.advertiser_name', null) || '', - }; - - nativeResponse.impressionTrackers = [emsLink, imp, impression, impression1, Thirdpartyimpressiontracker, Thirdpartyimpressiontracker2].filter(Boolean); - nativeResponse.javascriptTrackers = [impressionJs1, getGdeScriptUrl(ad.data.fields)].map(url => url ? `` : null).filter(Boolean); - nativeResponse.clickTrackers = [Thirdpartyclicktracker, thirdPartyClickTracker2].filter(Boolean); - - if (dsaurl) { - nativeResponse.privacyLink = dsaurl; - } - - return nativeResponse -} - -const getGdeScriptUrl = (adDataFields) => { - if (REQUIRED_GDE_PARAMS.every(param => adDataFields[param])) { - const params = new URLSearchParams(); - Object.entries(adDataFields) - .filter(([key]) => key.startsWith(GDE_PARAM_PREFIX)) - .forEach(([key, value]) => params.append(key, value)); - - return `${GDE_SCRIPT_URL}?${params.toString()}`; - } - return null; -} diff --git a/modules/dasBidAdapter.js b/modules/dasBidAdapter.js index 5203e126a1f..31f726ac2ae 100644 --- a/modules/dasBidAdapter.js +++ b/modules/dasBidAdapter.js @@ -1,15 +1,76 @@ import { getAllOrtbKeywords } from '../libraries/keywords/keywords.js'; import { getAdUnitSizes } from '../libraries/sizeUtils/sizeUtils.js'; -import { parseNativeResponse } from '../libraries/raspUtils/raspUtils.js'; import { registerBidder } from '../src/adapters/bidderFactory.js'; import { BANNER, NATIVE } from '../src/mediaTypes.js'; import { deepAccess, safeJSONParse } from '../src/utils.js'; const BIDDER_CODE = 'das'; +const GDE_SCRIPT_URL = 'https://ocdn.eu/adp/static/embedgde/latest/bundle.min.js'; +const GDE_PARAM_PREFIX = 'gde_'; +const REQUIRED_GDE_PARAMS = [ + 'gde_subdomena', + 'gde_id', + 'gde_stparam', + 'gde_fastid', + 'gde_inscreen' +]; + +function parseNativeResponse(ad) { + if (!(ad.data?.fields && ad.data?.meta)) { + return false; + } + + const { click, Thirdpartyimpressiontracker, Thirdpartyimpressiontracker2, thirdPartyClickTracker2, imp, impression, impression1, impressionJs1, image, Image, title, leadtext, url, Calltoaction, Body, Headline, Thirdpartyclicktracker, adInfo, partner_logo: partnerLogo } = ad.data.fields; + + const { dsaurl, height, width, adclick } = ad.data.meta; + const emsLink = ad.ems_link; + const link = adclick + (url || click); + const nativeResponse = { + sendTargetingKeys: false, + title: title || Headline || '', + image: { + url: image || Image || '', + width, + height + }, + icon: { + url: partnerLogo || '', + width, + height + }, + clickUrl: link, + cta: Calltoaction || '', + body: leadtext || Body || '', + body2: adInfo || '', + sponsoredBy: deepAccess(ad, 'data.meta.advertiser_name', null) || '', + }; + + nativeResponse.impressionTrackers = [emsLink, imp, impression, impression1, Thirdpartyimpressiontracker, Thirdpartyimpressiontracker2].filter(Boolean); + nativeResponse.javascriptTrackers = [impressionJs1, getGdeScriptUrl(ad.data.fields)].map(url => url ? `` : null).filter(Boolean); + nativeResponse.clickTrackers = [Thirdpartyclicktracker, thirdPartyClickTracker2].filter(Boolean); + + if (dsaurl) { + nativeResponse.privacyLink = dsaurl; + } -const getEndpoint = (network) => { + return nativeResponse +} + +function getGdeScriptUrl(adDataFields) { + if (REQUIRED_GDE_PARAMS.every(param => adDataFields[param])) { + const params = new URLSearchParams(); + Object.entries(adDataFields) + .filter(([key]) => key.startsWith(GDE_PARAM_PREFIX)) + .forEach(([key, value]) => params.append(key, value)); + + return `${GDE_SCRIPT_URL}?${params.toString()}`; + } + return null; +} + +function getEndpoint(network) { return `https://csr.onet.pl/${encodeURIComponent(network)}/bid`; -}; +} function parseParams(params, bidderRequest) { const customParams = {}; From 9de08b50628d109f8efff3ebbed940f92010af0e Mon Sep 17 00:00:00 2001 From: aszydlo Date: Thu, 13 Nov 2025 09:54:59 +0100 Subject: [PATCH 2/2] removed raspUtils from ringieraxelspringer adapter --- modules/ringieraxelspringerBidAdapter.js | 63 +++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/modules/ringieraxelspringerBidAdapter.js b/modules/ringieraxelspringerBidAdapter.js index 673ec10c6ab..65d4e350d95 100644 --- a/modules/ringieraxelspringerBidAdapter.js +++ b/modules/ringieraxelspringerBidAdapter.js @@ -7,11 +7,72 @@ import { } from '../src/utils.js'; import { getAllOrtbKeywords } from '../libraries/keywords/keywords.js'; import { getAdUnitSizes } from '../libraries/sizeUtils/sizeUtils.js'; -import { parseNativeResponse } from '../libraries/raspUtils/raspUtils.js'; import { BO_CSR_ONET } from '../libraries/paapiTools/buyerOrigins.js'; const BIDDER_CODE = 'ringieraxelspringer'; const VERSION = '1.0'; +const GDE_SCRIPT_URL = 'https://ocdn.eu/adp/static/embedgde/latest/bundle.min.js'; +const GDE_PARAM_PREFIX = 'gde_'; +const REQUIRED_GDE_PARAMS = [ + 'gde_subdomena', + 'gde_id', + 'gde_stparam', + 'gde_fastid', + 'gde_inscreen' +]; + +function parseNativeResponse(ad) { + if (!(ad.data?.fields && ad.data?.meta)) { + return false; + } + + const { click, Thirdpartyimpressiontracker, Thirdpartyimpressiontracker2, thirdPartyClickTracker2, imp, impression, impression1, impressionJs1, image, Image, title, leadtext, url, Calltoaction, Body, Headline, Thirdpartyclicktracker, adInfo, partner_logo: partnerLogo } = ad.data.fields; + + const { dsaurl, height, width, adclick } = ad.data.meta; + const emsLink = ad.ems_link; + const link = adclick + (url || click); + const nativeResponse = { + sendTargetingKeys: false, + title: title || Headline || '', + image: { + url: image || Image || '', + width, + height + }, + icon: { + url: partnerLogo || '', + width, + height + }, + clickUrl: link, + cta: Calltoaction || '', + body: leadtext || Body || '', + body2: adInfo || '', + sponsoredBy: deepAccess(ad, 'data.meta.advertiser_name', null) || '', + }; + + nativeResponse.impressionTrackers = [emsLink, imp, impression, impression1, Thirdpartyimpressiontracker, Thirdpartyimpressiontracker2].filter(Boolean); + nativeResponse.javascriptTrackers = [impressionJs1, getGdeScriptUrl(ad.data.fields)].map(url => url ? `` : null).filter(Boolean); + nativeResponse.clickTrackers = [Thirdpartyclicktracker, thirdPartyClickTracker2].filter(Boolean); + + if (dsaurl) { + nativeResponse.privacyLink = dsaurl; + } + + return nativeResponse +} + +function getGdeScriptUrl(adDataFields) { + if (REQUIRED_GDE_PARAMS.every(param => adDataFields[param])) { + const params = new URLSearchParams(); + Object.entries(adDataFields) + .filter(([key]) => key.startsWith(GDE_PARAM_PREFIX)) + .forEach(([key, value]) => params.append(key, value)); + + return `${GDE_SCRIPT_URL}?${params.toString()}`; + } + return null; +} const getEndpoint = (network) => { return `https://csr.onet.pl/${encodeURIComponent(network)}/csr-006/csr.json?nid=${encodeURIComponent(network)}&`;