From 4a2ea95b843b2c1c09401855b900c5df3fcee24a Mon Sep 17 00:00:00 2001 From: ym-ainiguez Date: Tue, 24 May 2022 16:05:07 -0700 Subject: [PATCH 1/4] implement getuserSyncs --- modules/yieldmoBidAdapter.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/modules/yieldmoBidAdapter.js b/modules/yieldmoBidAdapter.js index bc29f4822c8..5d7bc136b8d 100644 --- a/modules/yieldmoBidAdapter.js +++ b/modules/yieldmoBidAdapter.js @@ -176,8 +176,25 @@ export const spec = { return bids; }, - getUserSyncs: function () { - return []; + getUserSyncs: function(syncOptions, serverResponses, gdprConsent = {}, uspConsent = '') { + const syncs = []; + const gdprFlag = `&gdpr=${gdprConsent.gdprApplies ? 1 : 0}`; + const gdprString = `&gdpr_consent=${encodeURIComponent(gdprConsent.consentString)}`; + const usPrivacy = `us_privacy=${encodeURIComponent(uspConsent)}`; + const pbCookieSyncAssistUrl = `https://ads.yieldmo.com/pbcsa?${usPrivacy}${gdprFlag}${gdprString}`; + + if (syncOptions.iframeEnabled) { + syncs.push({ + type: 'iframe', + url: pbCookieSyncAssistUrl + '&type=iframe' + }); + } else if (syncOptions.pixelEnabled) { + syncs.push({ + type: 'image', + url: pbCookieSyncAssistUrl + '&type=image' + }); + } + return syncs; } }; registerBidder(spec); From 1fc5658e8dab258e0c4c7b46b58d227ac22fe7e5 Mon Sep 17 00:00:00 2001 From: ym-ainiguez Date: Wed, 25 May 2022 09:11:47 -0700 Subject: [PATCH 2/4] fix undefined issue and add unit tests --- modules/yieldmoBidAdapter.js | 2 +- test/spec/modules/yieldmoBidAdapter_spec.js | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/modules/yieldmoBidAdapter.js b/modules/yieldmoBidAdapter.js index 5d7bc136b8d..7fdda405fe2 100644 --- a/modules/yieldmoBidAdapter.js +++ b/modules/yieldmoBidAdapter.js @@ -179,7 +179,7 @@ export const spec = { getUserSyncs: function(syncOptions, serverResponses, gdprConsent = {}, uspConsent = '') { const syncs = []; const gdprFlag = `&gdpr=${gdprConsent.gdprApplies ? 1 : 0}`; - const gdprString = `&gdpr_consent=${encodeURIComponent(gdprConsent.consentString)}`; + const gdprString = `&gdpr_consent=${encodeURIComponent((gdprConsent.consentString || ''))}`; const usPrivacy = `us_privacy=${encodeURIComponent(uspConsent)}`; const pbCookieSyncAssistUrl = `https://ads.yieldmo.com/pbcsa?${usPrivacy}${gdprFlag}${gdprString}`; diff --git a/test/spec/modules/yieldmoBidAdapter_spec.js b/test/spec/modules/yieldmoBidAdapter_spec.js index f72705a79ac..13a1481fc61 100644 --- a/test/spec/modules/yieldmoBidAdapter_spec.js +++ b/test/spec/modules/yieldmoBidAdapter_spec.js @@ -606,8 +606,20 @@ describe('YieldmoAdapter', function () { }); describe('getUserSync', function () { - it('should return a tracker with type and url as parameters', function () { - expect(spec.getUserSyncs()).to.deep.equal([]); + const gdprFlag = `&gdpr=0`; + const usPrivacy = `us_privacy=`; + const gdprString = `&gdpr_consent=`; + const pbCookieSyncAssistUrl = `https://ads.yieldmo.com/pbcsa?${usPrivacy}${gdprFlag}${gdprString}`; + it('should use type iframe when iframeEnabled', function() { + const syncs = spec.getUserSyncs({iframeEnabled: true}); + expect(syncs).to.deep.equal([{type: 'iframe', url: pbCookieSyncAssistUrl + '&type=iframe'}]) + }); + it('should use type image when pixelEnabled', function() { + const syncs = spec.getUserSyncs({pixelEnabled: true}); + expect(syncs).to.deep.equal([{type: 'image', url: pbCookieSyncAssistUrl + '&type=image'}]) + }); + it('should register no syncs', function () { + expect(spec.getUserSyncs({})).to.deep.equal([]); }); }); }); From d44d0ea3bb234733e1f02c1e683de107718f2e6c Mon Sep 17 00:00:00 2001 From: ym-ainiguez Date: Wed, 25 May 2022 09:35:49 -0700 Subject: [PATCH 3/4] update cookie sync endpoint and create const --- modules/yieldmoBidAdapter.js | 7 ++++--- test/spec/modules/yieldmoBidAdapter_spec.js | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/yieldmoBidAdapter.js b/modules/yieldmoBidAdapter.js index 7fdda405fe2..f495727577c 100644 --- a/modules/yieldmoBidAdapter.js +++ b/modules/yieldmoBidAdapter.js @@ -25,6 +25,7 @@ const TIME_TO_LIVE = 300; const NET_REVENUE = true; const BANNER_SERVER_ENDPOINT = 'https://ads.yieldmo.com/exchange/prebid'; const VIDEO_SERVER_ENDPOINT = 'https://ads.yieldmo.com/exchange/prebidvideo'; +const PB_COOKIE_ASSIST_SYNC_ENDPOINT = `https://ads.yieldmo.com/pbcas`; const OUTSTREAM_VIDEO_PLAYER_URL = 'https://prebid-outstream.yieldmo.com/bundle.js'; const OPENRTB_VIDEO_BIDPARAMS = ['mimes', 'startdelay', 'placement', 'startdelay', 'skipafter', 'protocols', 'api', 'playbackmethod', 'maxduration', 'minduration', 'pos', 'skip', 'skippable']; @@ -181,17 +182,17 @@ export const spec = { const gdprFlag = `&gdpr=${gdprConsent.gdprApplies ? 1 : 0}`; const gdprString = `&gdpr_consent=${encodeURIComponent((gdprConsent.consentString || ''))}`; const usPrivacy = `us_privacy=${encodeURIComponent(uspConsent)}`; - const pbCookieSyncAssistUrl = `https://ads.yieldmo.com/pbcsa?${usPrivacy}${gdprFlag}${gdprString}`; + const pbCookieAssistSyncUrl = `${PB_COOKIE_ASSIST_SYNC_ENDPOINT}?${usPrivacy}${gdprFlag}${gdprString}`; if (syncOptions.iframeEnabled) { syncs.push({ type: 'iframe', - url: pbCookieSyncAssistUrl + '&type=iframe' + url: pbCookieAssistSyncUrl + '&type=iframe' }); } else if (syncOptions.pixelEnabled) { syncs.push({ type: 'image', - url: pbCookieSyncAssistUrl + '&type=image' + url: pbCookieAssistSyncUrl + '&type=image' }); } return syncs; diff --git a/test/spec/modules/yieldmoBidAdapter_spec.js b/test/spec/modules/yieldmoBidAdapter_spec.js index 13a1481fc61..1a1b5697edb 100644 --- a/test/spec/modules/yieldmoBidAdapter_spec.js +++ b/test/spec/modules/yieldmoBidAdapter_spec.js @@ -609,14 +609,14 @@ describe('YieldmoAdapter', function () { const gdprFlag = `&gdpr=0`; const usPrivacy = `us_privacy=`; const gdprString = `&gdpr_consent=`; - const pbCookieSyncAssistUrl = `https://ads.yieldmo.com/pbcsa?${usPrivacy}${gdprFlag}${gdprString}`; + const pbCookieAssistSyncUrl = `https://ads.yieldmo.com/pbcas?${usPrivacy}${gdprFlag}${gdprString}`; it('should use type iframe when iframeEnabled', function() { const syncs = spec.getUserSyncs({iframeEnabled: true}); - expect(syncs).to.deep.equal([{type: 'iframe', url: pbCookieSyncAssistUrl + '&type=iframe'}]) + expect(syncs).to.deep.equal([{type: 'iframe', url: pbCookieAssistSyncUrl + '&type=iframe'}]) }); it('should use type image when pixelEnabled', function() { const syncs = spec.getUserSyncs({pixelEnabled: true}); - expect(syncs).to.deep.equal([{type: 'image', url: pbCookieSyncAssistUrl + '&type=image'}]) + expect(syncs).to.deep.equal([{type: 'image', url: pbCookieAssistSyncUrl + '&type=image'}]) }); it('should register no syncs', function () { expect(spec.getUserSyncs({})).to.deep.equal([]); From e930e74c225e8563e7b1262a9256a6bf0efe3bcd Mon Sep 17 00:00:00 2001 From: ym-ainiguez Date: Wed, 25 May 2022 09:40:07 -0700 Subject: [PATCH 4/4] update const in test file as well --- test/spec/modules/yieldmoBidAdapter_spec.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/spec/modules/yieldmoBidAdapter_spec.js b/test/spec/modules/yieldmoBidAdapter_spec.js index 1a1b5697edb..f36c804a18b 100644 --- a/test/spec/modules/yieldmoBidAdapter_spec.js +++ b/test/spec/modules/yieldmoBidAdapter_spec.js @@ -5,6 +5,7 @@ import * as utils from 'src/utils.js'; describe('YieldmoAdapter', function () { const BANNER_ENDPOINT = 'https://ads.yieldmo.com/exchange/prebid'; const VIDEO_ENDPOINT = 'https://ads.yieldmo.com/exchange/prebidvideo'; + const PB_COOKIE_ASSIST_SYNC_ENDPOINT = `https://ads.yieldmo.com/pbcas`; const mockBannerBid = (rootParams = {}, params = {}) => ({ bidder: 'yieldmo', @@ -609,7 +610,7 @@ describe('YieldmoAdapter', function () { const gdprFlag = `&gdpr=0`; const usPrivacy = `us_privacy=`; const gdprString = `&gdpr_consent=`; - const pbCookieAssistSyncUrl = `https://ads.yieldmo.com/pbcas?${usPrivacy}${gdprFlag}${gdprString}`; + const pbCookieAssistSyncUrl = `${PB_COOKIE_ASSIST_SYNC_ENDPOINT}?${usPrivacy}${gdprFlag}${gdprString}`; it('should use type iframe when iframeEnabled', function() { const syncs = spec.getUserSyncs({iframeEnabled: true}); expect(syncs).to.deep.equal([{type: 'iframe', url: pbCookieAssistSyncUrl + '&type=iframe'}])