prebid.js 7.45.0 → 7.46.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/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/admaticBidAdapter.js +1 -1
- package/dist/adnuntiusBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.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/bidwatchAnalyticsAdapter.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/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/cwireBidAdapter.js +1 -1
- package/dist/debugging-standalone.js +1 -1
- package/dist/dependencies.json +3 -0
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/eskimiBidAdapter.js +1 -0
- 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/gridBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.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/nativoBidAdapter.js +1 -1
- package/dist/neuwoRtdProvider.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +132 -131
- 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/ortbConverter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/pairIdSystem.js +1 -0
- 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/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.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/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/yahoosspBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/integrationExamples/gpt/fledge_example.html +103 -0
- package/integrationExamples/gpt/prebidServer_fledge_example.html +111 -0
- package/libraries/ortbConverter/processors/video.js +1 -0
- package/modules/admaticBidAdapter.js +7 -2
- package/modules/adnuntiusBidAdapter.js +3 -1
- package/modules/appnexusBidAdapter.js +108 -102
- package/modules/bidwatchAnalyticsAdapter.js +2 -0
- package/modules/conversantBidAdapter.js +3 -0
- package/modules/criteoBidAdapter.js +5 -1
- package/modules/eskimiBidAdapter.js +72 -0
- package/modules/eskimiBidAdapter.md +34 -0
- package/modules/gridBidAdapter.js +42 -19
- package/modules/ixBidAdapter.js +30 -0
- package/modules/kargoBidAdapter.js +473 -246
- package/modules/kueezRtbBidAdapter.js +16 -4
- package/modules/mediasquareBidAdapter.js +2 -1
- package/modules/minutemediaplusBidAdapter.js +16 -4
- package/modules/nativoBidAdapter.js +110 -21
- package/modules/neuwoRtdProvider.js +0 -2
- package/modules/pairIdSystem.js +79 -0
- package/modules/pubmaticBidAdapter.js +12 -9
- package/modules/userId/eids.js +6 -0
- package/modules/vidoomyBidAdapter.js +11 -3
- package/modules/yieldmoBidAdapter.js +15 -5
- package/package.json +1 -1
- package/src/config.js +78 -127
- package/test/spec/modules/1plusXRtdProvider_spec.js +8 -7
- package/test/spec/modules/adagioBidAdapter_spec.js +0 -25
- package/test/spec/modules/admaticBidAdapter_spec.js +1 -1
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +2 -1
- package/test/spec/modules/appnexusBidAdapter_spec.js +464 -448
- package/test/spec/modules/axonixBidAdapter_spec.js +0 -27
- package/test/spec/modules/big-richmediaBidAdapter_spec.js +68 -64
- package/test/spec/modules/conversantBidAdapter_spec.js +1 -0
- package/test/spec/modules/criteoBidAdapter_spec.js +33 -1
- package/test/spec/modules/eskimiBidAdapter_spec.js +155 -0
- package/test/spec/modules/gridBidAdapter_spec.js +8 -0
- package/test/spec/modules/ixBidAdapter_spec.js +57 -0
- package/test/spec/modules/kargoBidAdapter_spec.js +297 -140
- package/test/spec/modules/kueezRtbBidAdapter_spec.js +22 -2
- package/test/spec/modules/minutemediaplusBidAdapter_spec.js +22 -2
- package/test/spec/modules/nativoBidAdapter_spec.js +101 -0
- package/test/spec/modules/neuwoRtdProvider_spec.js +0 -1
- package/test/spec/modules/ooloAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/pairIdSystem_spec.js +68 -0
- package/test/spec/modules/pubCommonId_spec.js +0 -17
- package/test/spec/modules/pubmaticBidAdapter_spec.js +868 -867
- package/test/spec/modules/realvuAnalyticsAdapter_spec.js +0 -5
- package/test/spec/modules/vidoomyBidAdapter_spec.js +23 -0
- package/test/spec/modules/yieldmoBidAdapter_spec.js +19 -1
- package/test/spec/unit/pbjs_api_spec.js +19 -3
- package/test/test_index.js +13 -3
- package/dist/gridNMBidAdapter.js +0 -1
- package/modules/gridNMBidAdapter.js +0 -422
- package/modules/gridNMBidAdapter.md +0 -39
- package/test/spec/modules/gridNMBidAdapter_spec.js +0 -636
|
@@ -81,11 +81,6 @@ describe('RealVu', function() {
|
|
|
81
81
|
result = realvuAnalyticsAdapter.checkIn(bid, ''); // test invalid partnerId ''
|
|
82
82
|
});
|
|
83
83
|
|
|
84
|
-
it.skip('isInView returns "yes"', () => {
|
|
85
|
-
let inview = realvuAnalyticsAdapter.isInView('ad1');
|
|
86
|
-
expect(inview).to.equal('yes');
|
|
87
|
-
});
|
|
88
|
-
|
|
89
84
|
it('isInView return "NA"', function () {
|
|
90
85
|
const adUnitCode = '1234';
|
|
91
86
|
let result = realvuAnalyticsAdapter.isInView(adUnitCode);
|
|
@@ -162,6 +162,29 @@ describe('vidoomyBidAdapter', function() {
|
|
|
162
162
|
expect(request[0].data.schain).to.eq(serializedForm);
|
|
163
163
|
});
|
|
164
164
|
|
|
165
|
+
it('should return standard json formated eids', function () {
|
|
166
|
+
const eids = [{
|
|
167
|
+
source: 'pubcid.org',
|
|
168
|
+
uids: [
|
|
169
|
+
{
|
|
170
|
+
id: 'some-random-id-value-1',
|
|
171
|
+
atype: 1
|
|
172
|
+
}
|
|
173
|
+
]
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
source: 'adserver.org',
|
|
177
|
+
uids: [{
|
|
178
|
+
id: 'some-random-id-value-2',
|
|
179
|
+
atype: 1
|
|
180
|
+
}]
|
|
181
|
+
}]
|
|
182
|
+
bidRequests[0].userIdAsEids = eids
|
|
183
|
+
const bidRequest = spec.buildRequests(bidRequests, bidderRequest);
|
|
184
|
+
expect(bidRequest[0].data).to.include.any.keys('eids');
|
|
185
|
+
expect(JSON.parse(bidRequest[0].data.eids)).to.eql(eids);
|
|
186
|
+
});
|
|
187
|
+
|
|
165
188
|
it('should set the bidfloor if getFloor module is undefined but static bidfloor is present', function () {
|
|
166
189
|
const request = { ...bidRequests[0], params: { bidfloor: 2.5 } }
|
|
167
190
|
const req = spec.buildRequests([request], bidderRequest)[0];
|
|
@@ -212,7 +212,7 @@ describe('YieldmoAdapter', function () {
|
|
|
212
212
|
expect(data.hasOwnProperty('h')).to.be.true;
|
|
213
213
|
expect(data.hasOwnProperty('w')).to.be.true;
|
|
214
214
|
expect(data.hasOwnProperty('pubcid')).to.be.true;
|
|
215
|
-
expect(data.userConsent).to.equal('{"gdprApplies":"","cmp":""}');
|
|
215
|
+
expect(data.userConsent).to.equal('{"gdprApplies":"","cmp":"","gpp":"","gpp_sid":""}');
|
|
216
216
|
expect(data.us_privacy).to.equal('');
|
|
217
217
|
});
|
|
218
218
|
|
|
@@ -262,6 +262,24 @@ describe('YieldmoAdapter', function () {
|
|
|
262
262
|
JSON.stringify({
|
|
263
263
|
gdprApplies: true,
|
|
264
264
|
cmp: 'BOJ/P2HOJ/P2HABABMAAAAAZ+A==',
|
|
265
|
+
gpp: '',
|
|
266
|
+
gpp_sid: '',
|
|
267
|
+
})
|
|
268
|
+
);
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
it('should add gpp information to request if available', () => {
|
|
272
|
+
const gppConsent = {
|
|
273
|
+
'gppString': 'BOJ/P2HOJ/P2HABABMAAAAAZ+A==',
|
|
274
|
+
'applicableSections': [8]
|
|
275
|
+
};
|
|
276
|
+
const data = buildAndGetData([mockBannerBid()], 0, mockBidderRequest({gppConsent}));
|
|
277
|
+
expect(data.userConsent).equal(
|
|
278
|
+
JSON.stringify({
|
|
279
|
+
gdprApplies: '',
|
|
280
|
+
cmp: '',
|
|
281
|
+
gpp: 'BOJ/P2HOJ/P2HABABMAAAAAZ+A==',
|
|
282
|
+
gpp_sid: [8],
|
|
265
283
|
})
|
|
266
284
|
);
|
|
267
285
|
});
|
|
@@ -888,16 +888,32 @@ describe('Unit: Prebid Module', function () {
|
|
|
888
888
|
|
|
889
889
|
it('should only apply price granularity if bid media type matches', function () {
|
|
890
890
|
initTestConfig({
|
|
891
|
-
adUnits: [
|
|
891
|
+
adUnits: [createAdUnit('div-gpt-ad-1460505748561-0')],
|
|
892
892
|
adUnitCodes: ['div-gpt-ad-1460505748561-0']
|
|
893
893
|
});
|
|
894
894
|
|
|
895
|
-
response =
|
|
895
|
+
response = bannerResponse;
|
|
896
896
|
response.tags[0].ads[0].cpm = 3.4288;
|
|
897
897
|
|
|
898
898
|
auction.callBids(cbTimeout);
|
|
899
899
|
let bidTargeting = targeting.getAllTargeting();
|
|
900
|
-
expect(bidTargeting['div-gpt-ad-1460505748561-0'][CONSTANTS.TARGETING_KEYS.PRICE_BUCKET]).to.equal('3.
|
|
900
|
+
expect(bidTargeting['div-gpt-ad-1460505748561-0'][CONSTANTS.TARGETING_KEYS.PRICE_BUCKET]).to.equal('3.25');
|
|
901
|
+
|
|
902
|
+
if (FEATURES.VIDEO) {
|
|
903
|
+
ajaxStub.restore();
|
|
904
|
+
|
|
905
|
+
initTestConfig({
|
|
906
|
+
adUnits: [createAdUnit('div-gpt-ad-1460505748561-0', 'video')],
|
|
907
|
+
adUnitCodes: ['div-gpt-ad-1460505748561-0']
|
|
908
|
+
});
|
|
909
|
+
|
|
910
|
+
response = videoResponse;
|
|
911
|
+
response.tags[0].ads[0].cpm = 3.4288;
|
|
912
|
+
|
|
913
|
+
auction.callBids(cbTimeout);
|
|
914
|
+
let bidTargeting = targeting.getAllTargeting();
|
|
915
|
+
expect(bidTargeting['div-gpt-ad-1460505748561-0'][CONSTANTS.TARGETING_KEYS.PRICE_BUCKET]).to.equal('3.00');
|
|
916
|
+
}
|
|
901
917
|
});
|
|
902
918
|
});
|
|
903
919
|
|
package/test/test_index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
[it, describe].forEach((ob) => {
|
|
3
2
|
ob.only = function () {
|
|
4
3
|
[
|
|
@@ -7,8 +6,19 @@
|
|
|
7
6
|
// eslint-disable-next-line no-console
|
|
8
7
|
].forEach(l => console.error(l))
|
|
9
8
|
throw new Error('do not use .only()')
|
|
10
|
-
}
|
|
11
|
-
})
|
|
9
|
+
};
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
[it, describe].forEach((ob) => {
|
|
13
|
+
ob.skip = function () {
|
|
14
|
+
[
|
|
15
|
+
'describe.skip and it.skip are disabled,',
|
|
16
|
+
'because they pollute the pipeline test output',
|
|
17
|
+
// eslint-disable-next-line no-console
|
|
18
|
+
].forEach(l => console.error(l))
|
|
19
|
+
throw new Error('do not use .skip()')
|
|
20
|
+
};
|
|
21
|
+
});
|
|
12
22
|
|
|
13
23
|
require('./test_deps.js');
|
|
14
24
|
|
package/dist/gridNMBidAdapter.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[11651],{62873:function(e,r,t){var n=t(44925),i=t(71002),a=t(93324),s=t(89062),o=t(78640),d=t(64358),p=t(20265),c=t(14699),u=t(35706),l=t(24679),g=t(3193),m=["mind","maxd","size"],f="https://x.bidswitch.net/sync?ssp=themediagrid",b=!1,v="Bid from response has no adm parameter - ",y="Bid from response has no price parameter - ",h="Bid from response has wrong content_type parameter - ",S="Array of bid objects is empty",x="Seatbid array from response has empty item",I="Response is empty",R="Response has empty seatbid array",j="Seatbid from response has no array of bid objects - ",w={code:"gridNM",supportedMediaTypes:[l.pX],isBidRequestValid:function(e){var r=!(e.params.source&&(0,d.isStr)(e.params.source)&&e.params.secid&&(0,d.isStr)(e.params.secid)&&e.params.pubid&&(0,d.isStr)(e.params.pubid)),t=(0,p.Z)(e,"mediaTypes.video")||{},n=(0,p.Z)(e,"params.video")||{},i=n.protocols,a=void 0===i?t.protocols:i,s=n.mimes,o=void 0===s?t.mimes:s;return r||(r=!a||!o),r||(r=!(0,d.isArray)(o)||!o.length||o.filter((function(e){return!(e&&(0,d.isStr)(e))})).length)||(r=!(0,d.isArray)(a)||!a.length||a.filter((function(e){return!((0,d.isNumber)(e)&&e>0&&!(e%1))})).length),!r},buildRequests:function(e,r){var t=e||[],n=[],o=r||{},c=o.bidderRequestId,u=o.auctionId,l=o.gdprConsent,m=o.uspConsent,f=o.timeout,b=o.refererInfo,v=b?encodeURIComponent(b.page):"";return t.forEach((function(e){var t,o,b=e.schain,y=e.userIdAsEids;c||(c=e.bidderRequestId),u||(u=e.auctionId);var h=e.params,S=h.floorcpm,x=h.source,I=h.secid,R=h.pubid,j=h.content,w=h.video,O=e.mediaTypes,A=e.bidId,N=e.adUnitCode,T=e.rtd,Z=e.ortb2Imp,_=e.sizes,E=function(e,r,t){var n=e.video?"video":"banner";if("function"==typeof r.getFloor){var s=r.getFloor({currency:"USD",mediaType:n,size:r.sizes.map((function(e){var r=(0,a.Z)(e,2);return{w:r[0],h:r[1]}}))});"object"!==(0,i.Z)(s)||"USD"!==s.currency||isNaN(parseFloat(s.floor))||(t=Math.max(t,parseFloat(s.floor)))}return t}(O||{},e,(0,d.isNumber)(S)&&S),C=T&&T.jwplayer&&T.jwplayer.targeting,U=j||C&&C.content,D={id:A.toString(),tagid:I.toString(),video:z((0,d.mergeDeep)({},w,O&&O.video),_),ext:{divid:N.toString()}};Z&&Z.ext&&Z.ext.data&&(D.ext.data=Z.ext.data,D.ext.data.adserver&&D.ext.data.adserver.adslot?D.ext.gpid=D.ext.data.adserver.adslot.toString():D.ext.gpid=Z.ext.data.pbadslot&&Z.ext.data.pbadslot.toString()),E&&(D.bidfloor=E);var q=[D],P={tid:u&&u.toString(),ext:{wrapper:"Prebid_js",wrapper_version:"7.45.0"}};b&&(P.ext.schain=b);var B=f,M=f?Math.min(B,f):B,X={id:c&&c.toString(),site:{page:v,publisher:{id:R}},source:P,tmax:M,imp:q};U&&(X.site.content=U),l&&l.consentString&&(o={consent:l.consentString}),y&&y.length&&((o=o||{}).eids=(0,s.Z)(y)),o&&Object.keys(o).length&&((t=t||{}).ext=o);var k=(0,p.Z)(r,"ortb2.user.data");k&&k.length&&(t||(t={data:[]}),t=(0,d.mergeDeep)(t,{data:(0,s.Z)(k)})),t&&(X.user=t);var F=(0,p.Z)(r,"ortb2.site");if(F){var J=(0,p.Z)(F,"content.data");if(J&&J.length){var V=X.site.content||{};X.site.content=(0,d.mergeDeep)(V,{data:J})}}l&&l.gdprApplies&&(X.regs={ext:{gdpr:l.gdprApplies?1:0}}),m&&(X.regs||(X.regs={ext:{}}),X.regs.ext.us_privacy=m),!0===g.vc.getConfig("coppa")&&(X.regs||(X.regs={}),X.regs.coppa=1),n.push({method:"POST",url:"https://grid.bidswitch.net/hbjson?no_mapping=1&sp="+x,bid:e,data:X})})),n},interpretResponse:function(e,r){var t,n=[];if((e=e&&e.body)?e.seatbid&&!e.seatbid.length&&(t=R):t=I,!t&&e.seatbid){var i=function(e){e?e.bid?e.bid[0]||(0,d.logError)(S):(0,d.logError)(j+JSON.stringify(e)):(0,d.logError)(x);return e&&e.bid&&e.bid[0]}(e.seatbid[0]);if(i&&(i.adm||i.nurl?i.price?"video"!==i.content_type&&(t=h+i.content_type):t=y+JSON.stringify(i):t=v+JSON.stringify(i),!t)){var a=r.bid,s={requestId:a.bidId,cpm:i.price,width:i.w,height:i.h,creativeId:i.auid||a.bidderRequestId,currency:"USD",netRevenue:!0,ttl:360,dealId:i.dealid,mediaType:l.pX,meta:{advertiserDomains:i.adomain?i.adomain:[]}};i.adm?(s.vastXml=i.adm,s.adResponse={content:s.vastXml}):i.nurl&&(s.vastUrl=i.nurl),a.renderer||a.mediaTypes&&a.mediaTypes.video&&"outstream"!==a.mediaTypes.video.context||(s.renderer=function(e,r){var t=u.Th.install({id:r.id,url:r.url,loaded:!1});try{t.setRender(O)}catch(e){(0,d.logWarn)("Prebid Error calling setRender on renderer",e)}return t}(0,{id:a.bidId,url:"https://acdn.adnxs.com/video/outstream/ANOutstreamVideo.js"})),n.push(s)}}return t&&(0,d.logError)(t),n},getUserSyncs:function(e,r,t,n){if(!b&&e.pixelEnabled){var i="";return t&&"string"==typeof t.consentString&&("boolean"==typeof t.gdprApplies?i+="&gdpr=".concat(Number(t.gdprApplies),"&gdpr_consent=").concat(t.consentString):i+="&gdpr_consent=".concat(t.consentString)),n&&(i+="&us_privacy=".concat(n)),b=!0,{type:"image",url:f+i}}}};function O(e){e.renderer.push((function(){window.ANOutstreamVideo.renderAd({targetId:e.adUnitCode,adResponse:e.adResponse})}))}function z(e,r){var t=e.mind,i=e.maxd,a=e.size,s=(0,n.Z)(e,m);if(a&&(0,d.isStr)(a)){var o=a.split("x");2===o.length&&parseInt(o[0])&&parseInt(o[1])&&(s.w=parseInt(o[0]),s.h=parseInt(o[1]))}if(!s.w||!s.h){var p=s.playerSize&&2===s.playerSize.length?s.playerSize:r;if(p){var c=p[0];c&&Object.assign(s,(0,d.parseGPTSingleSizeArrayToRtbSize)(c))}}s.playerSize&&delete s.playerSize;var u=s.durationRangeSec||[],l=t||u[0]||s.minduration,g=i||u[1]||s.maxduration;return l&&(s.minduration=l),g&&(s.maxduration=g),s}(0,c.dX)(w),(0,o.z)("gridNMBidAdapter")},44925:function(e,r,t){function n(e,r){if(null==e)return{};var t,n,i=function(e,r){if(null==e)return{};var t,n,i={},a=Object.keys(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||(i[t]=e[t]);return i}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}t.d(r,{Z:function(){return n}})}},function(e){var r;r=62873,e(e.s=r)}]);
|
|
@@ -1,422 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
isStr,
|
|
3
|
-
deepAccess,
|
|
4
|
-
isArray,
|
|
5
|
-
isNumber,
|
|
6
|
-
logError,
|
|
7
|
-
logWarn,
|
|
8
|
-
parseGPTSingleSizeArrayToRtbSize,
|
|
9
|
-
mergeDeep
|
|
10
|
-
} from '../src/utils.js';
|
|
11
|
-
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
12
|
-
import { Renderer } from '../src/Renderer.js';
|
|
13
|
-
import { VIDEO } from '../src/mediaTypes.js';
|
|
14
|
-
import { config } from '../src/config.js';
|
|
15
|
-
|
|
16
|
-
const BIDDER_CODE = 'gridNM';
|
|
17
|
-
const ENDPOINT_URL = 'https://grid.bidswitch.net/hbjson';
|
|
18
|
-
const SYNC_URL = 'https://x.bidswitch.net/sync?ssp=themediagrid';
|
|
19
|
-
const TIME_TO_LIVE = 360;
|
|
20
|
-
const RENDERER_URL = 'https://acdn.adnxs.com/video/outstream/ANOutstreamVideo.js';
|
|
21
|
-
|
|
22
|
-
let hasSynced = false;
|
|
23
|
-
|
|
24
|
-
const LOG_ERROR_MESS = {
|
|
25
|
-
noAdm: 'Bid from response has no adm parameter - ',
|
|
26
|
-
noPrice: 'Bid from response has no price parameter - ',
|
|
27
|
-
wrongContentType: 'Bid from response has wrong content_type parameter - ',
|
|
28
|
-
noBid: 'Array of bid objects is empty',
|
|
29
|
-
noPlacementCode: 'Can\'t find in requested bids the bid with auid - ',
|
|
30
|
-
emptyUids: 'Uids should be not empty',
|
|
31
|
-
emptySeatbid: 'Seatbid array from response has empty item',
|
|
32
|
-
emptyResponse: 'Response is empty',
|
|
33
|
-
hasEmptySeatbidArray: 'Response has empty seatbid array',
|
|
34
|
-
hasNoArrayOfBids: 'Seatbid from response has no array of bid objects - '
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
export const spec = {
|
|
38
|
-
code: BIDDER_CODE,
|
|
39
|
-
supportedMediaTypes: [ VIDEO ],
|
|
40
|
-
/**
|
|
41
|
-
* Determines whether or not the given bid request is valid.
|
|
42
|
-
*
|
|
43
|
-
* @param {BidRequest} bid The bid params to validate.
|
|
44
|
-
* @return boolean True if this is a valid bid, and false otherwise.
|
|
45
|
-
*/
|
|
46
|
-
isBidRequestValid: function(bid) {
|
|
47
|
-
let invalid =
|
|
48
|
-
!bid.params.source || !isStr(bid.params.source) ||
|
|
49
|
-
!bid.params.secid || !isStr(bid.params.secid) ||
|
|
50
|
-
!bid.params.pubid || !isStr(bid.params.pubid);
|
|
51
|
-
|
|
52
|
-
const video = deepAccess(bid, 'mediaTypes.video') || {};
|
|
53
|
-
const { protocols = video.protocols, mimes = video.mimes } = deepAccess(bid, 'params.video') || {};
|
|
54
|
-
if (!invalid) {
|
|
55
|
-
invalid = !protocols || !mimes;
|
|
56
|
-
}
|
|
57
|
-
if (!invalid) {
|
|
58
|
-
invalid = !isArray(mimes) || !mimes.length || mimes.filter((it) => !(it && isStr(it))).length;
|
|
59
|
-
if (!invalid) {
|
|
60
|
-
invalid = !isArray(protocols) || !protocols.length || protocols.filter((it) => !(isNumber(it) && it > 0 && !(it % 1))).length;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return !invalid;
|
|
64
|
-
},
|
|
65
|
-
/**
|
|
66
|
-
* Make a server request from the list of BidRequests.
|
|
67
|
-
*
|
|
68
|
-
* @param {BidRequest[]} validBidRequests - an array of bids
|
|
69
|
-
* @param {bidderRequest} bidderRequest bidder request object
|
|
70
|
-
* @return ServerRequest Info describing the request to the server.
|
|
71
|
-
*/
|
|
72
|
-
buildRequests: function(validBidRequests, bidderRequest) {
|
|
73
|
-
const bids = validBidRequests || [];
|
|
74
|
-
const requests = [];
|
|
75
|
-
let { bidderRequestId, auctionId, gdprConsent, uspConsent, timeout, refererInfo } = bidderRequest || {};
|
|
76
|
-
|
|
77
|
-
const referer = refererInfo ? encodeURIComponent(refererInfo.page) : '';
|
|
78
|
-
|
|
79
|
-
bids.forEach(bid => {
|
|
80
|
-
let user;
|
|
81
|
-
let userExt;
|
|
82
|
-
|
|
83
|
-
const schain = bid.schain;
|
|
84
|
-
const userIdAsEids = bid.userIdAsEids;
|
|
85
|
-
|
|
86
|
-
if (!bidderRequestId) {
|
|
87
|
-
bidderRequestId = bid.bidderRequestId;
|
|
88
|
-
}
|
|
89
|
-
if (!auctionId) {
|
|
90
|
-
auctionId = bid.auctionId;
|
|
91
|
-
}
|
|
92
|
-
const {
|
|
93
|
-
params: { floorcpm, source, secid, pubid, content, video },
|
|
94
|
-
mediaTypes, bidId, adUnitCode, rtd, ortb2Imp, sizes
|
|
95
|
-
} = bid;
|
|
96
|
-
|
|
97
|
-
const bidFloor = _getFloor(mediaTypes || {}, bid, isNumber(floorcpm) && floorcpm);
|
|
98
|
-
const jwTargeting = rtd && rtd.jwplayer && rtd.jwplayer.targeting;
|
|
99
|
-
|
|
100
|
-
const siteContent = content || (jwTargeting && jwTargeting.content);
|
|
101
|
-
|
|
102
|
-
const impObj = {
|
|
103
|
-
id: bidId.toString(),
|
|
104
|
-
tagid: secid.toString(),
|
|
105
|
-
video: createVideoForImp(mergeDeep({}, video, mediaTypes && mediaTypes.video), sizes),
|
|
106
|
-
ext: {
|
|
107
|
-
divid: adUnitCode.toString()
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
if (ortb2Imp && ortb2Imp.ext && ortb2Imp.ext.data) {
|
|
112
|
-
impObj.ext.data = ortb2Imp.ext.data;
|
|
113
|
-
if (impObj.ext.data.adserver && impObj.ext.data.adserver.adslot) {
|
|
114
|
-
impObj.ext.gpid = impObj.ext.data.adserver.adslot.toString();
|
|
115
|
-
} else {
|
|
116
|
-
impObj.ext.gpid = ortb2Imp.ext.data.pbadslot && ortb2Imp.ext.data.pbadslot.toString();
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
if (bidFloor) {
|
|
121
|
-
impObj.bidfloor = bidFloor;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
const imp = [impObj];
|
|
125
|
-
|
|
126
|
-
const reqSource = {
|
|
127
|
-
tid: auctionId && auctionId.toString(),
|
|
128
|
-
ext: {
|
|
129
|
-
wrapper: 'Prebid_js',
|
|
130
|
-
wrapper_version: '$prebid.version$'
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
if (schain) {
|
|
135
|
-
reqSource.ext.schain = schain;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
const bidderTimeout = timeout;
|
|
139
|
-
const tmax = timeout ? Math.min(bidderTimeout, timeout) : bidderTimeout;
|
|
140
|
-
|
|
141
|
-
const request = {
|
|
142
|
-
id: bidderRequestId && bidderRequestId.toString(),
|
|
143
|
-
site: {
|
|
144
|
-
page: referer,
|
|
145
|
-
publisher: {
|
|
146
|
-
id: pubid,
|
|
147
|
-
},
|
|
148
|
-
},
|
|
149
|
-
source: reqSource,
|
|
150
|
-
tmax,
|
|
151
|
-
imp,
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
if (siteContent) {
|
|
155
|
-
request.site.content = siteContent;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
if (gdprConsent && gdprConsent.consentString) {
|
|
159
|
-
userExt = { consent: gdprConsent.consentString };
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
if (userIdAsEids && userIdAsEids.length) {
|
|
163
|
-
userExt = userExt || {};
|
|
164
|
-
userExt.eids = [...userIdAsEids];
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
if (userExt && Object.keys(userExt).length) {
|
|
168
|
-
user = user || {};
|
|
169
|
-
user.ext = userExt;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
const ortb2UserData = deepAccess(bidderRequest, 'ortb2.user.data');
|
|
173
|
-
if (ortb2UserData && ortb2UserData.length) {
|
|
174
|
-
if (!user) {
|
|
175
|
-
user = { data: [] };
|
|
176
|
-
}
|
|
177
|
-
user = mergeDeep(user, {
|
|
178
|
-
data: [...ortb2UserData]
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
if (user) {
|
|
183
|
-
request.user = user;
|
|
184
|
-
}
|
|
185
|
-
const site = deepAccess(bidderRequest, 'ortb2.site');
|
|
186
|
-
if (site) {
|
|
187
|
-
const data = deepAccess(site, 'content.data');
|
|
188
|
-
if (data && data.length) {
|
|
189
|
-
const siteContent = request.site.content || {};
|
|
190
|
-
request.site.content = mergeDeep(siteContent, { data });
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
if (gdprConsent && gdprConsent.gdprApplies) {
|
|
195
|
-
request.regs = {
|
|
196
|
-
ext: {
|
|
197
|
-
gdpr: gdprConsent.gdprApplies ? 1 : 0
|
|
198
|
-
}
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
if (uspConsent) {
|
|
203
|
-
if (!request.regs) {
|
|
204
|
-
request.regs = { ext: {} };
|
|
205
|
-
}
|
|
206
|
-
request.regs.ext.us_privacy = uspConsent;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
if (config.getConfig('coppa') === true) {
|
|
210
|
-
if (!request.regs) {
|
|
211
|
-
request.regs = {};
|
|
212
|
-
}
|
|
213
|
-
request.regs.coppa = 1;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
requests.push({
|
|
217
|
-
method: 'POST',
|
|
218
|
-
url: ENDPOINT_URL + '?no_mapping=1&sp=' + source,
|
|
219
|
-
bid: bid,
|
|
220
|
-
data: request
|
|
221
|
-
});
|
|
222
|
-
});
|
|
223
|
-
|
|
224
|
-
return requests;
|
|
225
|
-
},
|
|
226
|
-
/**
|
|
227
|
-
* Unpack the response from the server into a list of bids.
|
|
228
|
-
*
|
|
229
|
-
* @param {*} serverResponse A successful response from the server.
|
|
230
|
-
* @param {*} bidRequest
|
|
231
|
-
* @return {Bid[]} An array of bids which were nested inside the server.
|
|
232
|
-
*/
|
|
233
|
-
interpretResponse: function(serverResponse, bidRequest) {
|
|
234
|
-
serverResponse = serverResponse && serverResponse.body;
|
|
235
|
-
const bidResponses = [];
|
|
236
|
-
|
|
237
|
-
let errorMessage;
|
|
238
|
-
|
|
239
|
-
if (!serverResponse) errorMessage = LOG_ERROR_MESS.emptyResponse;
|
|
240
|
-
else if (serverResponse.seatbid && !serverResponse.seatbid.length) {
|
|
241
|
-
errorMessage = LOG_ERROR_MESS.hasEmptySeatbidArray;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
if (!errorMessage && serverResponse.seatbid) {
|
|
245
|
-
const serverBid = _getBidFromResponse(serverResponse.seatbid[0]);
|
|
246
|
-
if (serverBid) {
|
|
247
|
-
if (!serverBid.adm && !serverBid.nurl) errorMessage = LOG_ERROR_MESS.noAdm + JSON.stringify(serverBid);
|
|
248
|
-
else if (!serverBid.price) errorMessage = LOG_ERROR_MESS.noPrice + JSON.stringify(serverBid);
|
|
249
|
-
else if (serverBid.content_type !== 'video') errorMessage = LOG_ERROR_MESS.wrongContentType + serverBid.content_type;
|
|
250
|
-
if (!errorMessage) {
|
|
251
|
-
const bid = bidRequest.bid;
|
|
252
|
-
const bidResponse = {
|
|
253
|
-
requestId: bid.bidId,
|
|
254
|
-
cpm: serverBid.price,
|
|
255
|
-
width: serverBid.w,
|
|
256
|
-
height: serverBid.h,
|
|
257
|
-
creativeId: serverBid.auid || bid.bidderRequestId,
|
|
258
|
-
currency: 'USD',
|
|
259
|
-
netRevenue: true,
|
|
260
|
-
ttl: TIME_TO_LIVE,
|
|
261
|
-
dealId: serverBid.dealid,
|
|
262
|
-
mediaType: VIDEO,
|
|
263
|
-
meta: {
|
|
264
|
-
advertiserDomains: serverBid.adomain ? serverBid.adomain : []
|
|
265
|
-
}
|
|
266
|
-
};
|
|
267
|
-
|
|
268
|
-
if (serverBid.adm) {
|
|
269
|
-
bidResponse.vastXml = serverBid.adm;
|
|
270
|
-
bidResponse.adResponse = {
|
|
271
|
-
content: bidResponse.vastXml
|
|
272
|
-
};
|
|
273
|
-
} else if (serverBid.nurl) {
|
|
274
|
-
bidResponse.vastUrl = serverBid.nurl;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
if (!bid.renderer && (!bid.mediaTypes || !bid.mediaTypes.video || bid.mediaTypes.video.context === 'outstream')) {
|
|
278
|
-
bidResponse.renderer = createRenderer(bidResponse, {
|
|
279
|
-
id: bid.bidId,
|
|
280
|
-
url: RENDERER_URL
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
bidResponses.push(bidResponse);
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
if (errorMessage) logError(errorMessage);
|
|
288
|
-
return bidResponses;
|
|
289
|
-
},
|
|
290
|
-
getUserSyncs: function (syncOptions, responses, gdprConsent, uspConsent) {
|
|
291
|
-
if (!hasSynced && syncOptions.pixelEnabled) {
|
|
292
|
-
let params = '';
|
|
293
|
-
|
|
294
|
-
if (gdprConsent && typeof gdprConsent.consentString === 'string') {
|
|
295
|
-
if (typeof gdprConsent.gdprApplies === 'boolean') {
|
|
296
|
-
params += `&gdpr=${Number(gdprConsent.gdprApplies)}&gdpr_consent=${gdprConsent.consentString}`;
|
|
297
|
-
} else {
|
|
298
|
-
params += `&gdpr_consent=${gdprConsent.consentString}`;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
if (uspConsent) {
|
|
302
|
-
params += `&us_privacy=${uspConsent}`;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
hasSynced = true;
|
|
306
|
-
return {
|
|
307
|
-
type: 'image',
|
|
308
|
-
url: SYNC_URL + params
|
|
309
|
-
};
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
};
|
|
313
|
-
|
|
314
|
-
/**
|
|
315
|
-
* Gets bidfloor
|
|
316
|
-
* @param {Object} mediaTypes
|
|
317
|
-
* @param {Object} bid
|
|
318
|
-
* @param {Number} floor
|
|
319
|
-
* @returns {Number} floor
|
|
320
|
-
*/
|
|
321
|
-
function _getFloor (mediaTypes, bid, floor) {
|
|
322
|
-
const curMediaType = mediaTypes.video ? 'video' : 'banner';
|
|
323
|
-
|
|
324
|
-
if (typeof bid.getFloor === 'function') {
|
|
325
|
-
const floorInfo = bid.getFloor({
|
|
326
|
-
currency: 'USD',
|
|
327
|
-
mediaType: curMediaType,
|
|
328
|
-
size: bid.sizes.map(([w, h]) => ({w, h}))
|
|
329
|
-
});
|
|
330
|
-
|
|
331
|
-
if (typeof floorInfo === 'object' &&
|
|
332
|
-
floorInfo.currency === 'USD' &&
|
|
333
|
-
!isNaN(parseFloat(floorInfo.floor))) {
|
|
334
|
-
floor = Math.max(floor, parseFloat(floorInfo.floor));
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
return floor;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
function _getBidFromResponse(respItem) {
|
|
342
|
-
if (!respItem) {
|
|
343
|
-
logError(LOG_ERROR_MESS.emptySeatbid);
|
|
344
|
-
} else if (!respItem.bid) {
|
|
345
|
-
logError(LOG_ERROR_MESS.hasNoArrayOfBids + JSON.stringify(respItem));
|
|
346
|
-
} else if (!respItem.bid[0]) {
|
|
347
|
-
logError(LOG_ERROR_MESS.noBid);
|
|
348
|
-
}
|
|
349
|
-
return respItem && respItem.bid && respItem.bid[0];
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
function outstreamRender (bid) {
|
|
353
|
-
bid.renderer.push(() => {
|
|
354
|
-
window.ANOutstreamVideo.renderAd({
|
|
355
|
-
targetId: bid.adUnitCode,
|
|
356
|
-
adResponse: bid.adResponse
|
|
357
|
-
});
|
|
358
|
-
});
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
function createRenderer (bid, rendererParams) {
|
|
362
|
-
const renderer = Renderer.install({
|
|
363
|
-
id: rendererParams.id,
|
|
364
|
-
url: rendererParams.url,
|
|
365
|
-
loaded: false
|
|
366
|
-
});
|
|
367
|
-
|
|
368
|
-
try {
|
|
369
|
-
renderer.setRender(outstreamRender);
|
|
370
|
-
} catch (err) {
|
|
371
|
-
logWarn('Prebid Error calling setRender on renderer', err);
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
return renderer;
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
function createVideoForImp({ mind, maxd, size, ...paramsVideo }, bidSizes) {
|
|
378
|
-
if (size && isStr(size)) {
|
|
379
|
-
const sizeArray = size.split('x');
|
|
380
|
-
if (sizeArray.length === 2 && parseInt(sizeArray[0]) && parseInt(sizeArray[1])) {
|
|
381
|
-
paramsVideo.w = parseInt(sizeArray[0]);
|
|
382
|
-
paramsVideo.h = parseInt(sizeArray[1]);
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
if (!paramsVideo.w || !paramsVideo.h) {
|
|
387
|
-
const playerSizes = paramsVideo.playerSize && paramsVideo.playerSize.length === 2 ? paramsVideo.playerSize : bidSizes;
|
|
388
|
-
if (playerSizes) {
|
|
389
|
-
const playerSize = playerSizes[0];
|
|
390
|
-
if (playerSize) {
|
|
391
|
-
Object.assign(paramsVideo, parseGPTSingleSizeArrayToRtbSize(playerSize));
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
if (paramsVideo.playerSize) {
|
|
397
|
-
delete paramsVideo.playerSize;
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
const durationRangeSec = paramsVideo.durationRangeSec || [];
|
|
401
|
-
const minDur = mind || durationRangeSec[0] || paramsVideo.minduration;
|
|
402
|
-
const maxDur = maxd || durationRangeSec[1] || paramsVideo.maxduration;
|
|
403
|
-
|
|
404
|
-
if (minDur) {
|
|
405
|
-
paramsVideo.minduration = minDur;
|
|
406
|
-
}
|
|
407
|
-
if (maxDur) {
|
|
408
|
-
paramsVideo.maxduration = maxDur;
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
return paramsVideo;
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
export function resetUserSync() {
|
|
415
|
-
hasSynced = false;
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
export function getSyncUrl() {
|
|
419
|
-
return SYNC_URL;
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
registerBidder(spec);
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# Overview
|
|
2
|
-
|
|
3
|
-
Module Name: The Grid Media Bidder Adapter
|
|
4
|
-
Module Type: Bidder Adapter
|
|
5
|
-
Maintainer: grid-tech@themediagrid.com
|
|
6
|
-
|
|
7
|
-
# Description
|
|
8
|
-
|
|
9
|
-
Module that connects to Grid demand source to fetch bids.
|
|
10
|
-
Grid bid adapter supports Banner and Video (instream and outstream).
|
|
11
|
-
|
|
12
|
-
# Test Parameters
|
|
13
|
-
```
|
|
14
|
-
var adUnits = [
|
|
15
|
-
{
|
|
16
|
-
code: 'test-div',
|
|
17
|
-
mediaTypes: {
|
|
18
|
-
video: {
|
|
19
|
-
playerSize: [728, 90],
|
|
20
|
-
context: 'outstream'
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
bids: [
|
|
24
|
-
{
|
|
25
|
-
bidder: "gridNM",
|
|
26
|
-
params: {
|
|
27
|
-
source: 'jwp',
|
|
28
|
-
secid: '11',
|
|
29
|
-
pubid: '22',
|
|
30
|
-
video: {
|
|
31
|
-
mimes: ['video/mp4', 'video/x-ms-wmv'],
|
|
32
|
-
protocols: [1,2,3,4,5,6]
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
]
|
|
37
|
-
}
|
|
38
|
-
];
|
|
39
|
-
```
|