diff --git a/modules/optimaticBidAdapter.js b/modules/optimaticBidAdapter.js
index 2408eb8cefe9..0c8305e68674 100644
--- a/modules/optimaticBidAdapter.js
+++ b/modules/optimaticBidAdapter.js
@@ -3,6 +3,9 @@ import { registerBidder } from 'src/adapters/bidderFactory';
export const ENDPOINT = '//mg-bid.optimatic.com/adrequest/';
export const spec = {
+
+ version: '1.0.4',
+
code: 'optimatic',
supportedMediaTypes: ['video'],
@@ -33,7 +36,7 @@ export const spec = {
} catch (e) {
response = null;
}
- if (!response || !bid || !bid.adm || !bid.price) {
+ if (!response || !bid || (!bid.adm && !bid.nurl) || !bid.price) {
utils.logWarn(`No valid bids from ${spec.code} bidder`);
return [];
}
@@ -43,7 +46,6 @@ export const spec = {
bidderCode: spec.code,
cpm: bid.price,
creativeId: bid.id,
- vastXml: bid.adm,
width: size.width,
height: size.height,
mediaType: 'video',
@@ -51,6 +53,11 @@ export const spec = {
ttl: 300,
netRevenue: true
};
+ if (bid.nurl) {
+ bidResponse.vastUrl = bid.nurl;
+ } else if (bid.adm) {
+ bidResponse.vastXml = bid.adm;
+ }
return bidResponse;
}
};
diff --git a/test/spec/modules/optimaticBidAdapter_spec.js b/test/spec/modules/optimaticBidAdapter_spec.js
index 890c0b786132..d701d981f374 100644
--- a/test/spec/modules/optimaticBidAdapter_spec.js
+++ b/test/spec/modules/optimaticBidAdapter_spec.js
@@ -106,7 +106,7 @@ describe('OptimaticBidAdapter', () => {
expect(bidResponse.length).to.equal(0);
});
- it('should return no bids if the response "adm" is missing', () => {
+ it('should return no bids if the response "nurl" and "adm" are missing', () => {
const serverResponse = {seatbid: [{bid: [{price: 5.01}]}]};
const bidResponse = spec.interpretResponse({ body: serverResponse }, { bidRequest });
expect(bidResponse.length).to.equal(0);
@@ -118,7 +118,7 @@ describe('OptimaticBidAdapter', () => {
expect(bidResponse.length).to.equal(0);
});
- it('should return a valid bid response', () => {
+ it('should return a valid bid response with just "adm"', () => {
const serverResponse = {seatbid: [{bid: [{id: 1, price: 5.01, adm: ''}]}], cur: 'USD'};
const bidResponse = spec.interpretResponse({ body: serverResponse }, { bidRequest });
let o = {
@@ -136,5 +136,43 @@ describe('OptimaticBidAdapter', () => {
};
expect(bidResponse).to.deep.equal(o);
});
+
+ it('should return a valid bid response with just "nurl"', () => {
+ const serverResponse = {seatbid: [{bid: [{id: 1, price: 5.01, nurl: 'https://mg-bid-win.optimatic.com/win/134eb262-948a-463e-ad93-bc8b622d399c?wp=${AUCTION_PRICE}'}]}], cur: 'USD'};
+ const bidResponse = spec.interpretResponse({ body: serverResponse }, { bidRequest });
+ let o = {
+ requestId: bidRequest.bidId,
+ bidderCode: spec.code,
+ cpm: serverResponse.seatbid[0].bid[0].price,
+ creativeId: serverResponse.seatbid[0].bid[0].id,
+ vastUrl: serverResponse.seatbid[0].bid[0].nurl,
+ width: 640,
+ height: 480,
+ mediaType: 'video',
+ currency: 'USD',
+ ttl: 300,
+ netRevenue: true
+ };
+ expect(bidResponse).to.deep.equal(o);
+ });
+
+ it('should return a valid bid response with "nurl" when both nurl and adm exist', () => {
+ const serverResponse = {seatbid: [{bid: [{id: 1, price: 5.01, adm: '', nurl: 'https://mg-bid-win.optimatic.com/win/134eb262-948a-463e-ad93-bc8b622d399c?wp=${AUCTION_PRICE}'}]}], cur: 'USD'};
+ const bidResponse = spec.interpretResponse({ body: serverResponse }, { bidRequest });
+ let o = {
+ requestId: bidRequest.bidId,
+ bidderCode: spec.code,
+ cpm: serverResponse.seatbid[0].bid[0].price,
+ creativeId: serverResponse.seatbid[0].bid[0].id,
+ vastUrl: serverResponse.seatbid[0].bid[0].nurl,
+ width: 640,
+ height: 480,
+ mediaType: 'video',
+ currency: 'USD',
+ ttl: 300,
+ netRevenue: true
+ };
+ expect(bidResponse).to.deep.equal(o);
+ });
});
});