diff --git a/modules/aniviewBidAdapter.js b/modules/aniviewBidAdapter.js
index b37d105da1a..7f3ad16b4e1 100644
--- a/modules/aniviewBidAdapter.js
+++ b/modules/aniviewBidAdapter.js
@@ -1,6 +1,7 @@
-import { VIDEO } from '../src/mediaTypes.js';
+import { VIDEO, BANNER } from '../src/mediaTypes.js';
import { registerBidder } from '../src/adapters/bidderFactory.js';
import { Renderer } from '../src/Renderer.js';
+import * as utils from '../src/utils.js';
const BIDDER_CODE = 'aniview';
const GVLID = 780;
@@ -172,6 +173,22 @@ function getCpmData(xml) {
}
return ret;
}
+function buildBanner(xmlStr, bidRequest, bidResponse) {
+ var rendererData = JSON.stringify({
+ id: bidRequest.adUnitCode,
+ debug: window.location.href.indexOf('pbjsDebug') >= 0,
+ placement: bidRequest.bidRequest.adUnitCode,
+ width: bidResponse.width,
+ height: bidResponse.height,
+ vastXml: xmlStr,
+ bid: bidResponse,
+ config: bidRequest.bidRequest.params.rendererConfig
+ });
+ var playerDomain = bidRequest.bidRequest.params.playerDomain || 'player.aniview.com';
+ var ad = '';
+ ad += ''
+ return ad;
+}
function interpretResponse(serverResponse, bidRequest) {
let bidResponses = [];
if (serverResponse && serverResponse.body) {
@@ -181,6 +198,10 @@ function interpretResponse(serverResponse, bidRequest) {
try {
let bidResponse = {};
if (bidRequest && bidRequest.data && bidRequest.data.bidId && bidRequest.data.bidId !== '') {
+ let mediaType = VIDEO;
+ if (bidRequest.bidRequest && bidRequest.bidRequest.mediaTypes && !bidRequest.bidRequest.mediaTypes[VIDEO]) {
+ mediaType = BANNER;
+ }
let xmlStr = serverResponse.body;
let xml = new window.DOMParser().parseFromString(xmlStr, 'text/xml');
if (xml && xml.getElementsByTagName('parsererror').length == 0) {
@@ -195,18 +216,27 @@ function interpretResponse(serverResponse, bidRequest) {
bidResponse.creativeId = xml.getElementsByTagName('Ad') && xml.getElementsByTagName('Ad')[0] && xml.getElementsByTagName('Ad')[0].getAttribute('id') ? xml.getElementsByTagName('Ad')[0].getAttribute('id') : 'creativeId';
bidResponse.currency = cpmData.currency;
bidResponse.netRevenue = true;
- var blob = new Blob([xmlStr], {
- type: 'application/xml'
- });
- bidResponse.vastUrl = window.URL.createObjectURL(blob);
- bidResponse.vastXml = xmlStr;
- bidResponse.mediaType = VIDEO;
+ bidResponse.mediaType = mediaType;
+ if (mediaType === VIDEO) {
+ try {
+ var blob = new Blob([xmlStr], {
+ type: 'application/xml'
+ });
+ bidResponse.vastUrl = window.URL.createObjectURL(blob);
+ } catch (ex) {
+ utils.logError('Aniview Debug create vastXml error:\n\n' + ex);
+ }
+ bidResponse.vastXml = xmlStr;
+ if (bidRequest.bidRequest && bidRequest.bidRequest.mediaTypes && bidRequest.bidRequest.mediaTypes.video && bidRequest.bidRequest.mediaTypes.video.context === 'outstream') {
+ bidResponse.renderer = newRenderer(bidRequest);
+ }
+ } else {
+ bidResponse.ad = buildBanner(xmlStr, bidRequest, bidResponse);
+ }
bidResponse.meta = {
advertiserDomains: []
};
- if (bidRequest.bidRequest && bidRequest.bidRequest.mediaTypes && bidRequest.bidRequest.mediaTypes.video && bidRequest.bidRequest.mediaTypes.video.context === 'outstream') { bidResponse.renderer = newRenderer(bidRequest); }
-
bidResponses.push(bidResponse);
}
} else {}
@@ -279,8 +309,8 @@ function getUserSyncs(syncOptions, serverResponses) {
export const spec = {
code: BIDDER_CODE,
gvlid: GVLID,
- aliases: ['avantisvideo', 'selectmediavideo'],
- supportedMediaTypes: [VIDEO],
+ aliases: ['avantisvideo', 'selectmediavideo', 'vidcrunch'],
+ supportedMediaTypes: [VIDEO, BANNER],
isBidRequestValid,
buildRequests,
interpretResponse,
diff --git a/test/spec/modules/aniviewBidAdapter_spec.js b/test/spec/modules/aniviewBidAdapter_spec.js
index b6d63fc2a8e..a9498af046c 100644
--- a/test/spec/modules/aniviewBidAdapter_spec.js
+++ b/test/spec/modules/aniviewBidAdapter_spec.js
@@ -204,6 +204,29 @@ describe('ANIVIEW Bid Adapter Test', function () {
expect(bidResponse.renderer.loaded).to.equal(false)
expect(bidResponse.width).to.equal(640)
expect(bidResponse.height).to.equal(480)
+ });
+
+ it('Support banner format', function () {
+ const bidRequest = spec.buildRequests([
+ {
+ bidId: '253dcb69fb2577',
+ params: {
+ playerDomain: 'example.com',
+ AV_PUBLISHERID: '55b78633181f4603178b4568',
+ AV_CHANNELID: '55b7904d181f46410f8b4568'
+ },
+ mediaTypes: {
+ banner: {
+ sizes: [[640, 480]],
+ }
+ }
+ }
+ ])[0]
+ const bidResponse = spec.interpretResponse(serverResponse, bidRequest)[0]
+
+ expect(bidResponse.ad).to.have.string('https://example.com/script/6.1/prebidRenderer.js');
+ expect(bidResponse.width).to.equal(640)
+ expect(bidResponse.height).to.equal(480)
})
});