prebid.js 7.46.0 → 7.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/ablidaBidAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/admaticBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adrinoBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectIdSystem.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/criteoIdSystem.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dependencies.json +4 -0
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/emtvBidAdapter.js +1 -0
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -0
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/impactifyBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/iqmBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/kulturemediaBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +142 -139
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/orbitsoftBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/radsBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/relevantdigitalBidAdapter.js +1 -0
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rtbhouseBidAdapter.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vdoaiBidAdapter.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/vidoomyBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/wipesBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yieldoneBidAdapter.js +1 -1
- package/modules/ablidaBidAdapter.js +4 -5
- package/modules/admaticBidAdapter.js +32 -5
- package/modules/adrinoBidAdapter.js +11 -4
- package/modules/axonixBidAdapter.js +6 -6
- package/modules/connectIdSystem.js +5 -2
- package/modules/criteoBidAdapter.js +3 -5
- package/modules/criteoIdSystem.js +27 -14
- package/modules/dspxBidAdapter.js +2 -3
- package/modules/emtvBidAdapter.js +211 -0
- package/modules/emtvBidAdapter.md +79 -0
- package/modules/freewheel-sspBidAdapter.js +32 -7
- package/modules/greenbidsRtdProvider.js +110 -0
- package/modules/greenbidsRtdProvider.md +65 -0
- package/modules/impactifyBidAdapter.js +0 -1
- package/modules/iqmBidAdapter.js +1 -2
- package/modules/missenaBidAdapter.js +1 -1
- package/modules/nextMillenniumBidAdapter.js +2 -0
- package/modules/orbitsoftBidAdapter.js +1 -2
- package/modules/radsBidAdapter.js +3 -4
- package/modules/relevantdigitalBidAdapter.js +198 -0
- package/modules/relevantdigitalBidAdapter.md +117 -0
- package/modules/rtbhouseBidAdapter.js +9 -12
- package/modules/sovrnBidAdapter.js +4 -0
- package/modules/stvBidAdapter.js +4 -5
- package/modules/tripleliftBidAdapter.js +14 -3
- package/modules/ttdBidAdapter.js +73 -71
- package/modules/underdogmediaBidAdapter.js +9 -12
- package/modules/userId/index.js +1 -1
- package/modules/vdoaiBidAdapter.js +2 -3
- package/modules/vidoomyBidAdapter.js +19 -6
- package/modules/vidoomyBidAdapter.md +12 -2
- package/modules/wipesBidAdapter.js +2 -3
- package/modules/yieldmoBidAdapter.js +2 -2
- package/modules/yieldoneBidAdapter.js +3 -4
- package/package.json +1 -1
- package/test/spec/modules/adlooxAdServerVideo_spec.js +18 -35
- package/test/spec/modules/admaticBidAdapter_spec.js +164 -11
- package/test/spec/modules/adrinoBidAdapter_spec.js +50 -2
- package/test/spec/modules/connectIdSystem_spec.js +4 -4
- package/test/spec/modules/criteoBidAdapter_spec.js +56 -0
- package/test/spec/modules/criteoIdSystem_spec.js +99 -9
- package/test/spec/modules/emtvBidAdapter_spec.js +400 -0
- package/test/spec/modules/freewheel-sspBidAdapter_spec.js +31 -2
- package/test/spec/modules/greenbidsRtdProvider_spec.js +210 -0
- package/test/spec/modules/relevantdigitalBidAdapter_spec.js +295 -0
- package/test/spec/modules/rtbhouseBidAdapter_spec.js +24 -2
- package/test/spec/modules/sovrnBidAdapter_spec.js +65 -0
- package/test/spec/modules/tripleliftBidAdapter_spec.js +53 -8
- package/test/spec/modules/ttdBidAdapter_spec.js +20 -0
- package/test/spec/modules/vidoomyBidAdapter_spec.js +49 -0
- package/test/spec/modules/yieldmoBidAdapter_spec.js +2 -2
- package/test/spec/ortbConverter/userId_spec.js +12 -0
- package/test/spec/modules/realvuAnalyticsAdapter_spec.js +0 -189
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {config} from '../src/config.js';
|
|
1
|
+
import {getAdUnitSizes} from '../src/utils.js';
|
|
3
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
4
3
|
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
5
4
|
|
|
@@ -87,7 +86,7 @@ export const spec = {
|
|
|
87
86
|
// dealId: dealId,
|
|
88
87
|
currency: currency,
|
|
89
88
|
netRevenue: netRevenue,
|
|
90
|
-
ttl:
|
|
89
|
+
ttl: 60,
|
|
91
90
|
// referrer: referrer,
|
|
92
91
|
// ad: response.adm
|
|
93
92
|
// ad: adCreative,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { logError,
|
|
1
|
+
import {deepAccess, logError, parseSizesInput} from '../src/utils.js';
|
|
2
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
4
4
|
import {config} from '../src/config.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import {Renderer} from '../src/Renderer.js';
|
|
6
|
+
import {INSTREAM, OUTSTREAM} from '../src/video.js';
|
|
7
7
|
|
|
8
8
|
const ENDPOINT = `https://d.vidoomy.com/api/rtbserver/prebid/`;
|
|
9
9
|
const BIDDER_CODE = 'vidoomy';
|
|
@@ -129,6 +129,14 @@ const buildRequests = (validBidRequests, bidderRequest) => {
|
|
|
129
129
|
const bidfloor = deepAccess(bid, `params.bidfloor`, 0);
|
|
130
130
|
const floor = getBidFloor(bid, adType, sizes, bidfloor);
|
|
131
131
|
|
|
132
|
+
const ortb2 = bidderRequest.ortb2 || {
|
|
133
|
+
bcat: [],
|
|
134
|
+
badv: [],
|
|
135
|
+
bapp: [],
|
|
136
|
+
btype: [],
|
|
137
|
+
battr: []
|
|
138
|
+
};
|
|
139
|
+
|
|
132
140
|
let eids;
|
|
133
141
|
const userEids = deepAccess(bid, 'userIdAsEids');
|
|
134
142
|
if (Array.isArray(userEids) && userEids.length > 0) {
|
|
@@ -155,7 +163,12 @@ const buildRequests = (validBidRequests, bidderRequest) => {
|
|
|
155
163
|
sp: encodeURIComponent(bidderRequest.refererInfo.page || bidderRequest.refererInfo.topmostLocation),
|
|
156
164
|
usp: bidderRequest.uspConsent || '',
|
|
157
165
|
coppa: !!config.getConfig('coppa'),
|
|
158
|
-
videoContext: videoContext || ''
|
|
166
|
+
videoContext: videoContext || '',
|
|
167
|
+
bcat: ortb2.bcat || bid.params.bcat || [],
|
|
168
|
+
badv: ortb2.badv || bid.params.badv || [],
|
|
169
|
+
bapp: ortb2.bapp || bid.params.bapp || [],
|
|
170
|
+
btype: ortb2.btype || bid.params.btype || [],
|
|
171
|
+
battr: ortb2.battr || bid.params.battr || []
|
|
159
172
|
};
|
|
160
173
|
|
|
161
174
|
if (bidderRequest.gdprConsent) {
|
|
@@ -261,7 +274,7 @@ const interpretResponse = (serverResponse, bidRequest) => {
|
|
|
261
274
|
}
|
|
262
275
|
};
|
|
263
276
|
|
|
264
|
-
function getUserSyncs
|
|
277
|
+
function getUserSyncs(syncOptions, responses, gdprConsent, uspConsent) {
|
|
265
278
|
if (syncOptions.iframeEnabled || syncOptions.pixelEnabled) {
|
|
266
279
|
const pixelType = syncOptions.pixelEnabled ? 'image' : 'iframe';
|
|
267
280
|
const urls = deepAccess(responses, '0.body.pixels') || COOKIE_SYNC_FALLBACK_URLS;
|
|
@@ -288,7 +301,7 @@ export const spec = {
|
|
|
288
301
|
|
|
289
302
|
registerBidder(spec);
|
|
290
303
|
|
|
291
|
-
function getDomainWithoutSubdomain
|
|
304
|
+
function getDomainWithoutSubdomain(hostname) {
|
|
292
305
|
const parts = hostname.split('.');
|
|
293
306
|
const newParts = [];
|
|
294
307
|
for (let i = parts.length - 1; i >= 0; i--) {
|
|
@@ -27,7 +27,12 @@ var adUnits = [
|
|
|
27
27
|
params: {
|
|
28
28
|
id: '123123',
|
|
29
29
|
pid: '123123',
|
|
30
|
-
bidfloor: 0.5 // This is optional
|
|
30
|
+
bidfloor: 0.5, // This is optional
|
|
31
|
+
bcat: ['IAB1-1'], // Optional - default is []
|
|
32
|
+
badv: ['example.com'], // Optional - default is []
|
|
33
|
+
bapp: ['app.com'], // Optional - default is []
|
|
34
|
+
btype: [1, 2, 3], // Optional - default is []
|
|
35
|
+
battr: [1, 2, 3] // Optional - default is []
|
|
31
36
|
}
|
|
32
37
|
}
|
|
33
38
|
]
|
|
@@ -52,7 +57,12 @@ var adUnits = [
|
|
|
52
57
|
params: {
|
|
53
58
|
id: '123123',
|
|
54
59
|
pid: '123123',
|
|
55
|
-
bidfloor: 0.5 // This is optional
|
|
60
|
+
bidfloor: 0.5, // This is optional
|
|
61
|
+
bcat: ['IAB1-1'], // Optional - default is []
|
|
62
|
+
badv: ['example.com'], // Optional - default is []
|
|
63
|
+
bapp: ['app.com'], // Optional - default is []
|
|
64
|
+
btype: [1, 2, 3], // Optional - default is []
|
|
65
|
+
battr: [1, 2, 3] // Optional - default is []
|
|
56
66
|
}
|
|
57
67
|
}
|
|
58
68
|
]
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {config} from '../src/config.js';
|
|
1
|
+
import {logWarn} from '../src/utils.js';
|
|
3
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
4
3
|
import {BANNER} from '../src/mediaTypes.js';
|
|
5
4
|
|
|
@@ -50,7 +49,7 @@ function interpretResponse(serverResponse, bidRequest) {
|
|
|
50
49
|
dealId: response.deal_id,
|
|
51
50
|
currency: 'JPY',
|
|
52
51
|
netRevenue: netRevenue,
|
|
53
|
-
ttl:
|
|
52
|
+
ttl: 60,
|
|
54
53
|
referrer: bidRequest.data.r || '',
|
|
55
54
|
mediaType: BANNER,
|
|
56
55
|
ad: response.ad_tag,
|
|
@@ -83,7 +83,7 @@ export const spec = {
|
|
|
83
83
|
gdprApplies: deepAccess(bidderRequest, 'gdprConsent.gdprApplies') || '',
|
|
84
84
|
cmp: deepAccess(bidderRequest, 'gdprConsent.consentString') || '',
|
|
85
85
|
gpp: deepAccess(bidderRequest, 'gppConsent.gppString') || '',
|
|
86
|
-
gpp_sid: deepAccess(bidderRequest, 'gppConsent.applicableSections') ||
|
|
86
|
+
gpp_sid: deepAccess(bidderRequest, 'gppConsent.applicableSections') || []
|
|
87
87
|
}),
|
|
88
88
|
us_privacy: deepAccess(bidderRequest, 'uspConsent') || ''
|
|
89
89
|
};
|
|
@@ -525,7 +525,7 @@ function populateOpenRtbGdpr(openRtbRequest, bidderRequest) {
|
|
|
525
525
|
deepSetValue(openRtbRequest, 'regs.ext.gdpr', gdpr && gdpr.gdprApplies ? 1 : 0);
|
|
526
526
|
deepSetValue(openRtbRequest, 'user.ext.consent', gdpr && gdpr.consentString ? gdpr.consentString : '');
|
|
527
527
|
}
|
|
528
|
-
if (gppsid) {
|
|
528
|
+
if (gppsid && gppsid.length > 0) {
|
|
529
529
|
deepSetValue(openRtbRequest, 'regs.ext.gpp_sid', gppsid);
|
|
530
530
|
}
|
|
531
531
|
const uspConsent = deepAccess(bidderRequest, 'uspConsent');
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import {deepAccess, isEmpty, isStr, logWarn, parseSizesInput} from '../src/utils.js';
|
|
2
|
-
import {config} from '../src/config.js';
|
|
3
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import {Renderer} from '../src/Renderer.js';
|
|
4
|
+
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
6
5
|
|
|
7
6
|
/**
|
|
8
7
|
* @typedef {import('../src/adapters/bidderFactory').Bid} Bid
|
|
@@ -147,7 +146,7 @@ export const spec = {
|
|
|
147
146
|
dealId: dealId,
|
|
148
147
|
currency: currency,
|
|
149
148
|
netRevenue: netRevenue,
|
|
150
|
-
ttl:
|
|
149
|
+
ttl: 60,
|
|
151
150
|
referrer: referrer,
|
|
152
151
|
meta: {
|
|
153
152
|
advertiserDomains: response.adomain ? response.adomain : []
|
package/package.json
CHANGED
|
@@ -118,6 +118,16 @@ describe('Adloox Ad Server Video', function () {
|
|
|
118
118
|
});
|
|
119
119
|
|
|
120
120
|
describe('buildVideoUrl', function () {
|
|
121
|
+
beforeEach(() => {
|
|
122
|
+
sinon.stub(URL, 'createObjectURL');
|
|
123
|
+
sinon.stub(URL, 'revokeObjectURL');
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
afterEach(() => {
|
|
127
|
+
URL.createObjectURL.restore()
|
|
128
|
+
URL.revokeObjectURL.restore()
|
|
129
|
+
});
|
|
130
|
+
|
|
121
131
|
describe('invalid arguments', function () {
|
|
122
132
|
it('should require callback', function (done) {
|
|
123
133
|
const ret = buildVideoUrl();
|
|
@@ -235,7 +245,6 @@ describe('Adloox Ad Server Video', function () {
|
|
|
235
245
|
it('should fetch, retry on withoutCredentials, follow and return a wrapped blob that expires', function (done) {
|
|
236
246
|
BID.responseTimestamp = utils.timestamp();
|
|
237
247
|
BID.ttl = 30;
|
|
238
|
-
this.timeout(5000)
|
|
239
248
|
|
|
240
249
|
const clock = sandbox.useFakeTimers(BID.responseTimestamp);
|
|
241
250
|
|
|
@@ -244,42 +253,16 @@ describe('Adloox Ad Server Video', function () {
|
|
|
244
253
|
url: wrapperUrl,
|
|
245
254
|
bid: BID
|
|
246
255
|
};
|
|
256
|
+
|
|
257
|
+
URL.createObjectURL.callsFake(() => 'mock-blob-url');
|
|
258
|
+
|
|
247
259
|
const ret = buildVideoUrl(options, function (url) {
|
|
248
260
|
expect(url.substr(0, options.url_vast.length)).is.equal(options.url_vast);
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
const xfr = sandbox.useFakeXMLHttpRequest();
|
|
256
|
-
xfr.useFilters = true;
|
|
257
|
-
xfr.addFilter(x => true); // there is no network traffic for Blob URLs here
|
|
258
|
-
|
|
259
|
-
ajax(blob, {
|
|
260
|
-
success: (responseText, q) => {
|
|
261
|
-
expect(q.status).is.equal(200);
|
|
262
|
-
expect(q.getResponseHeader('content-type')).is.equal(vastHeaders['content-type']);
|
|
263
|
-
|
|
264
|
-
clock.runAll();
|
|
265
|
-
|
|
266
|
-
ajax(blob, {
|
|
267
|
-
success: (responseText, q) => {
|
|
268
|
-
xfr.useFilters = false; // .restore() does not really work
|
|
269
|
-
if (q.status == 0) return done();
|
|
270
|
-
done(new Error('Blob should have expired'));
|
|
271
|
-
},
|
|
272
|
-
error: (statusText, q) => {
|
|
273
|
-
xfr.useFilters = false;
|
|
274
|
-
done();
|
|
275
|
-
}
|
|
276
|
-
});
|
|
277
|
-
},
|
|
278
|
-
error: (statusText, q) => {
|
|
279
|
-
xfr.useFilters = false;
|
|
280
|
-
done(new Error(statusText));
|
|
281
|
-
}
|
|
282
|
-
});
|
|
261
|
+
expect(url).to.match(/[?&]vast=mock-blob-url/);
|
|
262
|
+
sinon.assert.calledWith(URL.createObjectURL, sinon.match((val) => val.type === vastHeaders['content-type']));
|
|
263
|
+
clock.runAll();
|
|
264
|
+
sinon.assert.calledWith(URL.revokeObjectURL, 'mock-blob-url');
|
|
265
|
+
done();
|
|
283
266
|
});
|
|
284
267
|
expect(ret).is.true;
|
|
285
268
|
|
|
@@ -22,11 +22,13 @@ describe('admaticBidAdapter', () => {
|
|
|
22
22
|
'host': 'layer.serve.admatic.com.tr'
|
|
23
23
|
},
|
|
24
24
|
'adUnitCode': 'adunit-code',
|
|
25
|
+
'mediaType': 'banner',
|
|
25
26
|
'sizes': [[300, 250], [300, 600]],
|
|
26
27
|
'bidId': '30b31c1838de1e',
|
|
27
28
|
'bidderRequestId': '22edbae2733bf6',
|
|
28
29
|
'auctionId': '1d1a030790a475',
|
|
29
|
-
'creativeId': 'er2ee'
|
|
30
|
+
'creativeId': 'er2ee',
|
|
31
|
+
'ortb2': { 'badv': ['admatic.com.tr'] }
|
|
30
32
|
};
|
|
31
33
|
|
|
32
34
|
it('should return true when required params found', function() {
|
|
@@ -34,15 +36,11 @@ describe('admaticBidAdapter', () => {
|
|
|
34
36
|
});
|
|
35
37
|
|
|
36
38
|
it('should return false when required params are not passed', function() {
|
|
37
|
-
let
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
bid.params = {
|
|
41
|
-
'networkId': 0,
|
|
42
|
-
'host': 'layer.serve.admatic.com.tr'
|
|
39
|
+
let bid2 = {};
|
|
40
|
+
bid2.params = {
|
|
41
|
+
'someIncorrectParam': 0
|
|
43
42
|
};
|
|
44
|
-
|
|
45
|
-
expect(spec.isBidRequestValid(bid)).to.equal(false);
|
|
43
|
+
expect(spec.isBidRequestValid(bid2)).to.equal(false);
|
|
46
44
|
});
|
|
47
45
|
});
|
|
48
46
|
|
|
@@ -54,6 +52,7 @@ describe('admaticBidAdapter', () => {
|
|
|
54
52
|
'networkId': 10433394,
|
|
55
53
|
'host': 'layer.serve.admatic.com.tr'
|
|
56
54
|
},
|
|
55
|
+
'ortb2': { 'badv': ['admatic.com.tr'] },
|
|
57
56
|
'mediaTypes': {
|
|
58
57
|
'banner': {
|
|
59
58
|
'sizes': [[300, 250], [728, 90]]
|
|
@@ -98,6 +97,8 @@ describe('admaticBidAdapter', () => {
|
|
|
98
97
|
'h': 90
|
|
99
98
|
}
|
|
100
99
|
],
|
|
100
|
+
'mediatype': {},
|
|
101
|
+
'type': 'banner',
|
|
101
102
|
'id': '2205da7a81846b',
|
|
102
103
|
'floors': {
|
|
103
104
|
'banner': {
|
|
@@ -105,6 +106,49 @@ describe('admaticBidAdapter', () => {
|
|
|
105
106
|
'728x90': { 'currency': 'USD', 'floor': 2 }
|
|
106
107
|
}
|
|
107
108
|
}
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
'size': [
|
|
112
|
+
{
|
|
113
|
+
'w': 338,
|
|
114
|
+
'h': 280
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
'type': 'video',
|
|
118
|
+
'mediatype': {
|
|
119
|
+
'context': 'instream',
|
|
120
|
+
'mimes': [
|
|
121
|
+
'video/mp4'
|
|
122
|
+
],
|
|
123
|
+
'maxduration': 240,
|
|
124
|
+
'api': [
|
|
125
|
+
1,
|
|
126
|
+
2
|
|
127
|
+
],
|
|
128
|
+
'playerSize': [
|
|
129
|
+
[
|
|
130
|
+
338,
|
|
131
|
+
280
|
|
132
|
+
]
|
|
133
|
+
],
|
|
134
|
+
'protocols': [
|
|
135
|
+
1,
|
|
136
|
+
2,
|
|
137
|
+
3,
|
|
138
|
+
4,
|
|
139
|
+
5,
|
|
140
|
+
6,
|
|
141
|
+
7,
|
|
142
|
+
8
|
|
143
|
+
],
|
|
144
|
+
'skip': 1,
|
|
145
|
+
'playbackmethod': [
|
|
146
|
+
2
|
|
147
|
+
],
|
|
148
|
+
'linearity': 1,
|
|
149
|
+
'placement': 2
|
|
150
|
+
},
|
|
151
|
+
'id': '45e86fc7ce7fc93'
|
|
108
152
|
}
|
|
109
153
|
],
|
|
110
154
|
'ext': {
|
|
@@ -118,6 +162,7 @@ describe('admaticBidAdapter', () => {
|
|
|
118
162
|
'networkId': 10433394,
|
|
119
163
|
'host': 'layer.serve.admatic.com.tr'
|
|
120
164
|
},
|
|
165
|
+
'ortb2': { 'badv': ['admatic.com.tr'] },
|
|
121
166
|
'mediaTypes': {
|
|
122
167
|
'banner': {
|
|
123
168
|
'sizes': [[300, 250], [728, 90]]
|
|
@@ -163,12 +208,57 @@ describe('admaticBidAdapter', () => {
|
|
|
163
208
|
}
|
|
164
209
|
],
|
|
165
210
|
'id': '2205da7a81846b',
|
|
211
|
+
'mediatype': {},
|
|
212
|
+
'type': 'banner',
|
|
166
213
|
'floors': {
|
|
167
214
|
'banner': {
|
|
168
215
|
'300x250': { 'currency': 'USD', 'floor': 1 },
|
|
169
216
|
'728x90': { 'currency': 'USD', 'floor': 2 }
|
|
170
217
|
}
|
|
171
218
|
}
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
'size': [
|
|
222
|
+
{
|
|
223
|
+
'w': 338,
|
|
224
|
+
'h': 280
|
|
225
|
+
}
|
|
226
|
+
],
|
|
227
|
+
'type': 'video',
|
|
228
|
+
'mediatype': {
|
|
229
|
+
'context': 'instream',
|
|
230
|
+
'mimes': [
|
|
231
|
+
'video/mp4'
|
|
232
|
+
],
|
|
233
|
+
'maxduration': 240,
|
|
234
|
+
'api': [
|
|
235
|
+
1,
|
|
236
|
+
2
|
|
237
|
+
],
|
|
238
|
+
'playerSize': [
|
|
239
|
+
[
|
|
240
|
+
338,
|
|
241
|
+
280
|
|
242
|
+
]
|
|
243
|
+
],
|
|
244
|
+
'protocols': [
|
|
245
|
+
1,
|
|
246
|
+
2,
|
|
247
|
+
3,
|
|
248
|
+
4,
|
|
249
|
+
5,
|
|
250
|
+
6,
|
|
251
|
+
7,
|
|
252
|
+
8
|
|
253
|
+
],
|
|
254
|
+
'skip': 1,
|
|
255
|
+
'playbackmethod': [
|
|
256
|
+
2
|
|
257
|
+
],
|
|
258
|
+
'linearity': 1,
|
|
259
|
+
'placement': 2
|
|
260
|
+
},
|
|
261
|
+
'id': '45e86fc7ce7fc93'
|
|
172
262
|
}
|
|
173
263
|
],
|
|
174
264
|
'ext': {
|
|
@@ -194,6 +284,7 @@ describe('admaticBidAdapter', () => {
|
|
|
194
284
|
'sizes': [[300, 250], [728, 90]]
|
|
195
285
|
}
|
|
196
286
|
},
|
|
287
|
+
'ortb2': { 'badv': ['admatic.com.tr'] },
|
|
197
288
|
getFloor: inputParams => {
|
|
198
289
|
if (inputParams.mediaType === BANNER && inputParams.size[0] === 300 && inputParams.size[1] === 250) {
|
|
199
290
|
return {
|
|
@@ -217,6 +308,7 @@ describe('admaticBidAdapter', () => {
|
|
|
217
308
|
'networkId': 10433394,
|
|
218
309
|
'host': 'layer.serve.admatic.com.tr'
|
|
219
310
|
},
|
|
311
|
+
'ortb2': { 'badv': ['admatic.com.tr'] },
|
|
220
312
|
'adUnitCode': 'adunit-code',
|
|
221
313
|
'sizes': [[300, 250], [728, 90]],
|
|
222
314
|
'bidId': '30b31c1838de1e',
|
|
@@ -249,9 +341,35 @@ describe('admaticBidAdapter', () => {
|
|
|
249
341
|
'width': 300,
|
|
250
342
|
'height': 250,
|
|
251
343
|
'price': 0.01,
|
|
344
|
+
'type': 'banner',
|
|
252
345
|
'bidder': 'admatic',
|
|
253
346
|
'adomain': ['admatic.com.tr'],
|
|
254
|
-
'party_tag': '<div></div>'
|
|
347
|
+
'party_tag': '<div></div>',
|
|
348
|
+
'iurl': 'https://www.admatic.com.tr'
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
'id': 2,
|
|
352
|
+
'creative_id': '3741',
|
|
353
|
+
'width': 300,
|
|
354
|
+
'height': 250,
|
|
355
|
+
'price': 0.01,
|
|
356
|
+
'type': 'video',
|
|
357
|
+
'bidder': 'admatic',
|
|
358
|
+
'adomain': ['admatic.com.tr'],
|
|
359
|
+
'party_tag': '<VAST></VAST>',
|
|
360
|
+
'iurl': 'https://www.admatic.com.tr'
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
'id': 3,
|
|
364
|
+
'creative_id': '3741',
|
|
365
|
+
'width': 300,
|
|
366
|
+
'height': 250,
|
|
367
|
+
'price': 0.01,
|
|
368
|
+
'type': 'video',
|
|
369
|
+
'bidder': 'admatic',
|
|
370
|
+
'adomain': ['admatic.com.tr'],
|
|
371
|
+
'party_tag': 'https://www.admatic.com.tr',
|
|
372
|
+
'iurl': 'https://www.admatic.com.tr'
|
|
255
373
|
}
|
|
256
374
|
],
|
|
257
375
|
'queryId': 'cdnbh24rlv0hhkpfpln0',
|
|
@@ -265,13 +383,48 @@ describe('admaticBidAdapter', () => {
|
|
|
265
383
|
width: 300,
|
|
266
384
|
height: 250,
|
|
267
385
|
currency: 'TRY',
|
|
386
|
+
mediaType: 'banner',
|
|
268
387
|
netRevenue: true,
|
|
269
388
|
ad: '<div></div>',
|
|
270
389
|
creativeId: '374',
|
|
271
390
|
meta: {
|
|
272
391
|
advertiserDomains: ['admatic.com.tr']
|
|
273
392
|
},
|
|
274
|
-
ttl:
|
|
393
|
+
ttl: 60,
|
|
394
|
+
bidder: 'admatic'
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
requestId: 2,
|
|
398
|
+
cpm: 0.01,
|
|
399
|
+
width: 300,
|
|
400
|
+
height: 250,
|
|
401
|
+
currency: 'TRY',
|
|
402
|
+
mediaType: 'video',
|
|
403
|
+
netRevenue: true,
|
|
404
|
+
vastImpUrl: 'https://www.admatic.com.tr',
|
|
405
|
+
vastXml: '<VAST></VAST>',
|
|
406
|
+
creativeId: '3741',
|
|
407
|
+
meta: {
|
|
408
|
+
advertiserDomains: ['admatic.com.tr']
|
|
409
|
+
},
|
|
410
|
+
ttl: 60,
|
|
411
|
+
bidder: 'admatic'
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
requestId: 3,
|
|
415
|
+
cpm: 0.01,
|
|
416
|
+
width: 300,
|
|
417
|
+
height: 250,
|
|
418
|
+
currency: 'TRY',
|
|
419
|
+
mediaType: 'video',
|
|
420
|
+
netRevenue: true,
|
|
421
|
+
vastImpUrl: 'https://www.admatic.com.tr',
|
|
422
|
+
vastXml: 'https://www.admatic.com.tr',
|
|
423
|
+
creativeId: '3741',
|
|
424
|
+
meta: {
|
|
425
|
+
advertiserDomains: ['admatic.com.tr']
|
|
426
|
+
},
|
|
427
|
+
ttl: 60,
|
|
275
428
|
bidder: 'admatic'
|
|
276
429
|
}
|
|
277
430
|
];
|
|
@@ -43,7 +43,7 @@ describe('adrinoBidAdapter', function () {
|
|
|
43
43
|
|
|
44
44
|
it('should return false when unsupported media type is requested', function () {
|
|
45
45
|
const bid = { ...validBid };
|
|
46
|
-
bid.mediaTypes = {
|
|
46
|
+
bid.mediaTypes = { video: {} };
|
|
47
47
|
expect(spec.isBidRequestValid(bid)).to.equal(false);
|
|
48
48
|
});
|
|
49
49
|
|
|
@@ -54,7 +54,46 @@ describe('adrinoBidAdapter', function () {
|
|
|
54
54
|
});
|
|
55
55
|
});
|
|
56
56
|
|
|
57
|
-
describe('
|
|
57
|
+
describe('buildBannerRequest', function () {
|
|
58
|
+
const bidRequest = {
|
|
59
|
+
bidder: 'adrino',
|
|
60
|
+
params: {
|
|
61
|
+
hash: 'abcdef123456'
|
|
62
|
+
},
|
|
63
|
+
mediaTypes: {
|
|
64
|
+
banner: {
|
|
65
|
+
sizes: [[300, 250], [970, 250]]
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
sizes: [[300, 250], [970, 250]],
|
|
69
|
+
userId: { criteoId: '2xqi3F94aHdwWnM3', pubcid: '3ec0b202-7697' },
|
|
70
|
+
adUnitCode: 'adunit-code-2',
|
|
71
|
+
bidId: '12345678901234',
|
|
72
|
+
bidderRequestId: '98765432109876',
|
|
73
|
+
auctionId: '01234567891234',
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
it('should build the request correctly', function () {
|
|
77
|
+
const result = spec.buildRequests(
|
|
78
|
+
[ bidRequest ],
|
|
79
|
+
{ refererInfo: { page: 'http://example.com/' } }
|
|
80
|
+
);
|
|
81
|
+
expect(result.length).to.equal(1);
|
|
82
|
+
expect(result[0].method).to.equal('POST');
|
|
83
|
+
expect(result[0].url).to.equal('https://prd-prebid-bidder.adrino.io/bidder/bids/');
|
|
84
|
+
expect(result[0].data[0].bidId).to.equal('12345678901234');
|
|
85
|
+
expect(result[0].data[0].placementHash).to.equal('abcdef123456');
|
|
86
|
+
expect(result[0].data[0].referer).to.equal('http://example.com/');
|
|
87
|
+
expect(result[0].data[0].userAgent).to.equal(navigator.userAgent);
|
|
88
|
+
expect(result[0].data[0]).to.have.property('bannerParams');
|
|
89
|
+
expect(result[0].data[0].bannerParams.sizes.length).to.equal(2);
|
|
90
|
+
expect(result[0].data[0]).to.have.property('userId');
|
|
91
|
+
expect(result[0].data[0].userId.criteoId).to.equal('2xqi3F94aHdwWnM3');
|
|
92
|
+
expect(result[0].data[0].userId.pubcid).to.equal('3ec0b202-7697');
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
describe('buildNativeRequest', function () {
|
|
58
97
|
const bidRequest = {
|
|
59
98
|
bidder: 'adrino',
|
|
60
99
|
params: {
|
|
@@ -71,6 +110,15 @@ describe('adrinoBidAdapter', function () {
|
|
|
71
110
|
}
|
|
72
111
|
}
|
|
73
112
|
},
|
|
113
|
+
nativeParams: {
|
|
114
|
+
title: {
|
|
115
|
+
required: true
|
|
116
|
+
},
|
|
117
|
+
image: {
|
|
118
|
+
required: true,
|
|
119
|
+
sizes: [[300, 150], [300, 210]]
|
|
120
|
+
}
|
|
121
|
+
},
|
|
74
122
|
userId: { criteoId: '2xqi3F94aHdwWnM3', pubcid: '3ec0b202-7697' },
|
|
75
123
|
adUnitCode: 'adunit-code',
|
|
76
124
|
bidId: '12345678901234',
|
|
@@ -86,7 +86,7 @@ describe('Yahoo ConnectID Submodule', () => {
|
|
|
86
86
|
{
|
|
87
87
|
detail: 'cookie data over local storage data',
|
|
88
88
|
cookie: '{"connectId":"foo"}',
|
|
89
|
-
localStorage: {connectId: 'bar'},
|
|
89
|
+
localStorage: JSON.stringify({connectId: 'bar'}),
|
|
90
90
|
expected: {connectId: 'foo'}
|
|
91
91
|
},
|
|
92
92
|
{
|
|
@@ -98,7 +98,7 @@ describe('Yahoo ConnectID Submodule', () => {
|
|
|
98
98
|
{
|
|
99
99
|
detail: 'local storage data if only it local storage data exists',
|
|
100
100
|
cookie: undefined,
|
|
101
|
-
localStorage: {connectId: 'bar'},
|
|
101
|
+
localStorage: JSON.stringify({connectId: 'bar'}),
|
|
102
102
|
expected: {connectId: 'bar'}
|
|
103
103
|
},
|
|
104
104
|
{
|
|
@@ -441,10 +441,10 @@ describe('Yahoo ConnectID Submodule', () => {
|
|
|
441
441
|
const dateNowStub = sinon.stub(Date, 'now');
|
|
442
442
|
dateNowStub.returns(0);
|
|
443
443
|
const upsResponse = {connectid: 'barfoo'};
|
|
444
|
-
const expectedStoredData = {
|
|
444
|
+
const expectedStoredData = JSON.stringify({
|
|
445
445
|
connectid: 'barfoo',
|
|
446
446
|
__expires: 60 * 60 * 24 * 14 * 1000
|
|
447
|
-
};
|
|
447
|
+
});
|
|
448
448
|
invokeGetIdAPI({
|
|
449
449
|
puid: PUBLISHER_USER_ID,
|
|
450
450
|
pixelId: PIXEL_ID
|
|
@@ -728,6 +728,62 @@ describe('The Criteo bidding adapter', function () {
|
|
|
728
728
|
expect(ortbRequest.slots[0].native).to.equal(true);
|
|
729
729
|
});
|
|
730
730
|
|
|
731
|
+
it('should map ortb native assets to slot ext assets', function () {
|
|
732
|
+
const assets = [{
|
|
733
|
+
required: 1,
|
|
734
|
+
id: 1,
|
|
735
|
+
img: {
|
|
736
|
+
type: 3,
|
|
737
|
+
wmin: 100,
|
|
738
|
+
hmin: 100,
|
|
739
|
+
}
|
|
740
|
+
},
|
|
741
|
+
{
|
|
742
|
+
required: 1,
|
|
743
|
+
id: 2,
|
|
744
|
+
title: {
|
|
745
|
+
len: 140,
|
|
746
|
+
}
|
|
747
|
+
},
|
|
748
|
+
{
|
|
749
|
+
required: 1,
|
|
750
|
+
id: 3,
|
|
751
|
+
data: {
|
|
752
|
+
type: 1,
|
|
753
|
+
}
|
|
754
|
+
},
|
|
755
|
+
{
|
|
756
|
+
required: 0,
|
|
757
|
+
id: 4,
|
|
758
|
+
data: {
|
|
759
|
+
type: 2,
|
|
760
|
+
}
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
required: 0,
|
|
764
|
+
id: 5,
|
|
765
|
+
img: {
|
|
766
|
+
type: 1,
|
|
767
|
+
wmin: 20,
|
|
768
|
+
hmin: 20,
|
|
769
|
+
}
|
|
770
|
+
}];
|
|
771
|
+
const bidRequests = [
|
|
772
|
+
{
|
|
773
|
+
nativeOrtbRequest: {
|
|
774
|
+
assets: assets
|
|
775
|
+
},
|
|
776
|
+
params: {
|
|
777
|
+
nativeCallback: function () { }
|
|
778
|
+
},
|
|
779
|
+
},
|
|
780
|
+
];
|
|
781
|
+
const request = spec.buildRequests(bidRequests, bidderRequest);
|
|
782
|
+
const ortbRequest = request.data;
|
|
783
|
+
expect(ortbRequest.slots[0].native).to.equal(true);
|
|
784
|
+
expect(ortbRequest.slots[0].ext.assets).to.deep.equal(assets);
|
|
785
|
+
});
|
|
786
|
+
|
|
731
787
|
it('should properly build a networkId request', function () {
|
|
732
788
|
const bidderRequest = {
|
|
733
789
|
refererInfo: {
|