From 4b34c2661f180ea9dcbdd43828d09b74c5454f14 Mon Sep 17 00:00:00 2001 From: Yohan Boutin Date: Tue, 16 Mar 2021 15:32:25 +0100 Subject: [PATCH 1/6] add connectionType to the bidRequest --- modules/seedtagBidAdapter.js | 28 ++++++++++++++++++++++++++-- modules/seedtagBidAdapter.md | 1 + 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/modules/seedtagBidAdapter.js b/modules/seedtagBidAdapter.js index 24cc6489ef0..bfec1805557 100644 --- a/modules/seedtagBidAdapter.js +++ b/modules/seedtagBidAdapter.js @@ -18,6 +18,28 @@ const mediaTypesMap = { [VIDEO]: 'video' }; +const deviceConnection = { + FIXED: 'fixed', + MOBILE: 'mobile', + UNKNOWN: 'unknown' +}; + + +const getConnextionType = () => { + switch (connectionType) { + case 'wifi': + case "ethernet": + return deviceConnection.FIXED + case 'cellular': + case 'wimax': + return deviceConnection.MOBILE + default: + const isMobile = (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream']) || + /android/i.test(navigator.userAgent) + return isMobile ? deviceConnection.UNKNOWN : deviceConnection.FIXED + } +}; + function mapMediaType(seedtagMediaType) { if (seedtagMediaType === 'display') return BANNER; if (seedtagMediaType === 'video') return VIDEO; @@ -55,13 +77,15 @@ function buildBidRequests(validBidRequests) { return mediaTypesMap[pbjsType]; } ); + const bidRequest = { id: validBidRequest.bidId, transactionId: validBidRequest.transactionId, sizes: validBidRequest.sizes, supplyTypes: mediaTypes, adUnitId: params.adUnitId, - placement: params.placement + placement: params.placement, + connectionType: getConnextionType() }; if (params.adPosition) { @@ -149,7 +173,7 @@ export const spec = { version: '$prebid.version$', bidRequests: buildBidRequests(validBidRequests) }; - + console.log(bidderRequest) if (payload.cmp) { const gdprApplies = bidderRequest.gdprConsent.gdprApplies; if (gdprApplies !== undefined) payload['ga'] = gdprApplies; diff --git a/modules/seedtagBidAdapter.md b/modules/seedtagBidAdapter.md index 627ff8333ad..f9a2e4d6422 100644 --- a/modules/seedtagBidAdapter.md +++ b/modules/seedtagBidAdapter.md @@ -57,6 +57,7 @@ var adUnits = [{ adUnitId: '0000', // required placement: 'video', // required adPosition: 0, // optional + connectionType: 'mobile' // optional (can be mobile/fixed/unknown) // Video object as specified in OpenRTB 2.5 video: { mimes: ['video/mp4'], // recommended From ceb6664e1c83bbce2192f5b2566e22e91d10f93f Mon Sep 17 00:00:00 2001 From: Yohan Boutin Date: Tue, 16 Mar 2021 15:42:44 +0100 Subject: [PATCH 2/6] remove a console.log --- modules/seedtagBidAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/seedtagBidAdapter.js b/modules/seedtagBidAdapter.js index bfec1805557..e3de2b84638 100644 --- a/modules/seedtagBidAdapter.js +++ b/modules/seedtagBidAdapter.js @@ -173,7 +173,7 @@ export const spec = { version: '$prebid.version$', bidRequests: buildBidRequests(validBidRequests) }; - console.log(bidderRequest) + if (payload.cmp) { const gdprApplies = bidderRequest.gdprConsent.gdprApplies; if (gdprApplies !== undefined) payload['ga'] = gdprApplies; From 3913c7f8bb1b696fd45df7219d2c5d12c20363aa Mon Sep 17 00:00:00 2001 From: Yohan Boutin Date: Tue, 16 Mar 2021 16:52:48 +0100 Subject: [PATCH 3/6] put connectionType in the payload --- modules/seedtagBidAdapter.js | 8 ++++---- modules/seedtagBidAdapter.md | 1 - 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/modules/seedtagBidAdapter.js b/modules/seedtagBidAdapter.js index e3de2b84638..7911aa87f38 100644 --- a/modules/seedtagBidAdapter.js +++ b/modules/seedtagBidAdapter.js @@ -24,11 +24,11 @@ const deviceConnection = { UNKNOWN: 'unknown' }; - const getConnextionType = () => { - switch (connectionType) { + const type = window.navigator.connection && (window.navigator.connection.type || window.navigator.connection.effectiveType) + switch (type) { case 'wifi': - case "ethernet": + case 'ethernet': return deviceConnection.FIXED case 'cellular': case 'wimax': @@ -85,7 +85,6 @@ function buildBidRequests(validBidRequests) { supplyTypes: mediaTypes, adUnitId: params.adUnitId, placement: params.placement, - connectionType: getConnextionType() }; if (params.adPosition) { @@ -171,6 +170,7 @@ export const spec = { cmp: !!bidderRequest.gdprConsent, timeout: bidderRequest.timeout, version: '$prebid.version$', + connectionType: getConnextionType(), bidRequests: buildBidRequests(validBidRequests) }; diff --git a/modules/seedtagBidAdapter.md b/modules/seedtagBidAdapter.md index f9a2e4d6422..627ff8333ad 100644 --- a/modules/seedtagBidAdapter.md +++ b/modules/seedtagBidAdapter.md @@ -57,7 +57,6 @@ var adUnits = [{ adUnitId: '0000', // required placement: 'video', // required adPosition: 0, // optional - connectionType: 'mobile' // optional (can be mobile/fixed/unknown) // Video object as specified in OpenRTB 2.5 video: { mimes: ['video/mp4'], // recommended From 17d3921d5057078ebfead1f14b236234d7fdbf5a Mon Sep 17 00:00:00 2001 From: Yohan Boutin Date: Tue, 16 Mar 2021 17:04:46 +0100 Subject: [PATCH 4/6] more secure connectionType access --- modules/seedtagBidAdapter.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/modules/seedtagBidAdapter.js b/modules/seedtagBidAdapter.js index 7911aa87f38..b18ed078905 100644 --- a/modules/seedtagBidAdapter.js +++ b/modules/seedtagBidAdapter.js @@ -25,8 +25,8 @@ const deviceConnection = { }; const getConnextionType = () => { - const type = window.navigator.connection && (window.navigator.connection.type || window.navigator.connection.effectiveType) - switch (type) { + const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection || {} + switch (connection.type || connection.effectiveType) { case 'wifi': case 'ethernet': return deviceConnection.FIXED @@ -34,8 +34,7 @@ const getConnextionType = () => { case 'wimax': return deviceConnection.MOBILE default: - const isMobile = (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream']) || - /android/i.test(navigator.userAgent) + const isMobile = /iPad|iPhone|iPod/.test(navigator.userAgent) || /android/i.test(navigator.userAgent) return isMobile ? deviceConnection.UNKNOWN : deviceConnection.FIXED } }; From e1d22c04e80cdd668b25b94b1865ceae7ab6ad59 Mon Sep 17 00:00:00 2001 From: Yohan Boutin Date: Wed, 17 Mar 2021 14:54:58 +0100 Subject: [PATCH 5/6] add a unit test for connectionType --- test/spec/modules/seedtagBidAdapter_spec.js | 1 + 1 file changed, 1 insertion(+) diff --git a/test/spec/modules/seedtagBidAdapter_spec.js b/test/spec/modules/seedtagBidAdapter_spec.js index b43d2fa8a5f..1a73cca8ca4 100644 --- a/test/spec/modules/seedtagBidAdapter_spec.js +++ b/test/spec/modules/seedtagBidAdapter_spec.js @@ -200,6 +200,7 @@ describe('Seedtag Adapter', function() { expect(data.url).to.equal('referer') expect(data.publisherToken).to.equal('0000-0000-01') expect(typeof data.version).to.equal('string') + expect(['fixed', 'mobile', 'unknown'].indexOf(data.connectionType)).to.be.above(-1) }) describe('adPosition param', function() { From b8af1808c54d775ff41e5bd41ea4c27ebbadc62b Mon Sep 17 00:00:00 2001 From: Yohan Boutin Date: Thu, 25 Mar 2021 10:03:19 +0100 Subject: [PATCH 6/6] fix connectionType typo --- modules/seedtagBidAdapter.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/seedtagBidAdapter.js b/modules/seedtagBidAdapter.js index b18ed078905..775f269f6ae 100644 --- a/modules/seedtagBidAdapter.js +++ b/modules/seedtagBidAdapter.js @@ -24,7 +24,7 @@ const deviceConnection = { UNKNOWN: 'unknown' }; -const getConnextionType = () => { +const getConnectionType = () => { const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection || {} switch (connection.type || connection.effectiveType) { case 'wifi': @@ -169,7 +169,7 @@ export const spec = { cmp: !!bidderRequest.gdprConsent, timeout: bidderRequest.timeout, version: '$prebid.version$', - connectionType: getConnextionType(), + connectionType: getConnectionType(), bidRequests: buildBidRequests(validBidRequests) };