diff --git a/modules/seedtagBidAdapter.js b/modules/seedtagBidAdapter.js index 24cc6489ef0..775f269f6ae 100644 --- a/modules/seedtagBidAdapter.js +++ b/modules/seedtagBidAdapter.js @@ -18,6 +18,27 @@ const mediaTypesMap = { [VIDEO]: 'video' }; +const deviceConnection = { + FIXED: 'fixed', + MOBILE: 'mobile', + UNKNOWN: 'unknown' +}; + +const getConnectionType = () => { + const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection || {} + switch (connection.type || connection.effectiveType) { + case 'wifi': + case 'ethernet': + return deviceConnection.FIXED + case 'cellular': + case 'wimax': + return deviceConnection.MOBILE + default: + const isMobile = /iPad|iPhone|iPod/.test(navigator.userAgent) || /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 +76,14 @@ 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, }; if (params.adPosition) { @@ -147,6 +169,7 @@ export const spec = { cmp: !!bidderRequest.gdprConsent, timeout: bidderRequest.timeout, version: '$prebid.version$', + connectionType: getConnectionType(), bidRequests: buildBidRequests(validBidRequests) }; 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() {